GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2021-09-30T11:44:17Zhttps://gitlab.freedesktop.org/gstreamer/orc/-/issues/36ARM64 build on Windows (MSVC) is broken2021-09-30T11:44:17ZSeungha Yangseungha@centricular.comARM64 build on Windows (MSVC) is brokenNot sure we ever supported Windows ARM64 previously, (I guess we didn't?)
```
[1/6572] Compiling C object subprojects/orc/orc/orc-0.4-0.dll.p/orccpu-arm.c.obj
FAILED: subprojects/orc/orc/orc-0.4-0.dll.p/orccpu-arm.c.obj
"cl" "-Isubproje...Not sure we ever supported Windows ARM64 previously, (I guess we didn't?)
```
[1/6572] Compiling C object subprojects/orc/orc/orc-0.4-0.dll.p/orccpu-arm.c.obj
FAILED: subprojects/orc/orc/orc-0.4-0.dll.p/orccpu-arm.c.obj
"cl" "-Isubprojects\orc\orc\orc-0.4-0.dll.p" "-Isubprojects\orc\orc" "-I..\subprojects\orc\orc" "-Isubprojects\orc" "-I..\subprojects\orc" "/MD" "/nologo" "/showIncludes" "/W2" "/O2" "/Ob1" "/Zi" "-DHAVE_CONFIG_H" "/utf-8" "-DORC_ENABLE_UNSTABLE_API" "-D_GNU_SOURCE" "-DBUILDING_ORC" "/Fdsubprojects\orc\orc\orc-0.4-0.dll.p\orccpu-arm.c.pdb" /Fosubprojects/orc/orc/orc-0.4-0.dll.p/orccpu-arm.c.obj "/c" ../subprojects/orc/orc/orccpu-arm.c
../subprojects/orc/orc/orccpu-arm.c(35): fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory
[4/6572] Compiling C object subprojects/orc/orc/orc-0.4-0.dll.p/orcarm.c.obj
FAILED: subprojects/orc/orc/orc-0.4-0.dll.p/orcarm.c.obj
"cl" "-Isubprojects\orc\orc\orc-0.4-0.dll.p" "-Isubprojects\orc\orc" "-I..\subprojects\orc\orc" "-Isubprojects\orc" "-I..\subprojects\orc" "/MD" "/nologo" "/showIncludes" "/W2" "/O2" "/Ob1" "/Zi" "-DHAVE_CONFIG_H" "/utf-8" "-DORC_ENABLE_UNSTABLE_API" "-D_GNU_SOURCE" "-DBUILDING_ORC" "/Fdsubprojects\orc\orc\orc-0.4-0.dll.p\orcarm.c.pdb" /Fosubprojects/orc/orc/orc-0.4-0.dll.p/orcarm.c.obj "/c" ../subprojects/orc/orc/orcarm.c
../subprojects/orc/orc/orcarm.c(941): error C2296: '+': illegal, left operand has type 'OrcExecutorFunc'
```https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/-/issues/142Setting up rtsp server2023-06-13T15:52:56ZAnitha NikhilSetting up rtsp serverHi All,
Can someone help me setting up a gstreamer rtsp server on ubuntu.
i need to setup rtsp server on ubuntu and stream file content to another m/c through TCP
Thanks in advanceHi All,
Can someone help me setting up a gstreamer rtsp server on ubuntu.
i need to setup rtsp server on ubuntu and stream file content to another m/c through TCP
Thanks in advancehttps://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/-/issues/141second and subsequent clients freeze and disconnect after few seconds. can't ...2021-09-24T11:03:30ZBoris Yumatovsecond and subsequent clients freeze and disconnect after few seconds. can't connect again after first client disconnectedHi. I'm trying to use rtsp-server which shares same source with all clients, but encountered strange behavior in some cases.
That's how i'm construct server:
Pipeline:
```
"( appsrc name=vsrc ! videoconvert !
nvh264device1enc bitrate=5...Hi. I'm trying to use rtsp-server which shares same source with all clients, but encountered strange behavior in some cases.
That's how i'm construct server:
Pipeline:
```
"( appsrc name=vsrc ! videoconvert !
nvh264device1enc bitrate=5000 aud=true preset=hq rc-mode=cbr-hq ! rtph264pay name=pay pt=96 name=pay0 )"
```
Initialization:
```
m_internal.server = gst_rtsp_server_new();
g_signal_connect (m_internal.server, "client-connected", (GCallback) handleClientCallBack, &m_internal);
g_object_set (m_internal.server, "service", QString::number(m_options.port).toStdString().c_str(), NULL);
GstRTSPMountPoints* mounts = gst_rtsp_server_get_mount_points (m_internal.server);
GstRTSPMediaFactory* factory = gst_rtsp_media_factory_new();
gst_rtsp_media_factory_set_shared (factory, true);
gst_rtsp_media_factory_set_launch (factory,
QString("( %1 )").arg(m_options.pipeline).toStdString().c_str());
g_signal_connect (factory, "media-configure", (GCallback) mediaConfigureCallBack, &m_internal);
gst_rtsp_mount_points_add_factory (mounts, "/vd", factory);
g_object_unref (mounts);
m_internal.id = gst_rtsp_server_attach (m_internal.server, NULL);
g_main_context_iteration(g_main_context_default(), FALSE);
```
Configure media:
```
GstElement *element;
element = gst_rtsp_media_get_element (media);
gst_rtsp_media_set_shared(media, TRUE);
gst_rtsp_media_set_reusable (media, TRUE);
m_internal.appsrc = gst_bin_get_by_name_recurse_up (GST_BIN (element), "vsrc");
gst_util_set_object_arg (G_OBJECT (m_internal.appsrc), "format", "time");
/* configure the caps of the video */
g_object_set (G_OBJECT (m_internal.appsrc), "caps",
gst_caps_new_simple ("video/x-raw",
"format", G_TYPE_STRING, "BGR",
"width", G_TYPE_INT, m_options.width,
"height", G_TYPE_INT, m_options.height,
"framerate", GST_TYPE_FRACTION, m_options.frameRate, 1, NULL)
, NULL);
g_signal_connect (m_internal.appsrc, "need-data", (GCallback) needDataCallBack, &m_internal);
g_signal_connect (m_internal.appsrc, "enough-data", (GCallback) enoughtDataCallBack, &m_internal);
gst_object_unref (element);
```
Send data to clients:
```
GstBuffer *buffer;
GstFlowReturn ret;
const qint32 size = image.total() * image.elemSize();
buffer = gst_buffer_new_wrapped_full(GST_MEMORY_FLAG_READONLY, (gpointer)m_buffer.front().data, size, 0, size, NULL, NULL);
m_buffer.erase(m_buffer.begin());
qint64 duration = ((double)1 / m_options.frameRate) * GST_SECOND;
GST_BUFFER_PTS (buffer) = m_internal.pts;
GST_BUFFER_DTS (buffer) = m_internal.pts;
GST_BUFFER_DURATION(buffer) = duration;
GST_BUFFER_OFFSET(buffer) = m_internal.counter++;
ret = gst_app_src_push_buffer(GST_APP_SRC(m_internal.appsrc), buffer);
m_internal.pts += duration;
if (ret != GST_FLOW_OK)
{
return false;
}
g_main_context_iteration(g_main_context_default(), FALSE);
```
That's how i construct test clients using gst-launch-1.0:
`gst-launch-1.0 -v rtspsrc location=rtsp://127.0.0.1:5759/vd latency=0 tcp-timeout=2000000 protocols=GST_RTSP_LOWER_TRANS_TCP ! application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay ! h264parse ! avdec_h264 direct-rendering=FALSE ! videoconvert ! d3dvideosink sync=false`
When there is just one client everything works as expected, but there are two issue cases:
1. When first client connects, then disconnects (no clients left at this moments) and connects again. After than it can't start get data again. That's what i see in console:
```
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Pipeline is PREROLLED ...
Prerolled, waiting for progress to finish...
Progress: (connect) Connecting to rtsp://127.0.0.1:5759/vd
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: latency = 0
/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: ntp-sync = false
/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: rfc7273-sync = false
/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: ntp-time-source = ntp
/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: drop-on-latency = false
/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: max-rtcp-rtp-time-diff = 1000
/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: max-ts-offset-adjustment = 0
/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: buffer-mode = slave
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager: buffer-mode = slave
Progress: (request) Sending PLAY request
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request
```
And nothing happends next...
2. when second client connects. at the beginning everything works fine. but after few seconds second client freezes (new frames doesn't appear on d3dvideosink and exection time doesn't update) and after 5-10 second disconnects. That's what i see in console:
```
/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpSession:rtpsession0: stats = application/x-rtp-session-stats, rtx-drop-count=(uint)0, sent-nack-count=(uint)0, recv-nack-count=(uint)0, source-stats=(GValueArray)< "application/x-rtp-source-stats\,\ ssrc\=\(uint\)3294441468\,\ internal\=\(boolean\)false\,\ validated\=\(boolean\)true\,\ received-bye\=\(boolean\)false\,\ is-csrc\=\(boolean\)false\,\ is-sender\=\(boolean\)false\,\ seqnum-base\=\(int\)-1\,\ clock-rate\=\(int\)90000\,\ octets-sent\=\(guint64\)0\,\ packets-sent\=\(guint64\)0\,\ octets-received\=\(guint64\)954819\,\ packets-received\=\(guint64\)917\,\ bytes-received\=\(guint64\)991499\,\ bitrate\=\(guint64\)2916365\,\ packets-lost\=\(int\)-1\,\ jitter\=\(uint\)489\,\ sent-pli-count\=\(uint\)0\,\ recv-pli-count\=\(uint\)0\,\ sent-fir-count\=\(uint\)0\,\ recv-fir-count\=\(uint\)0\,\ sent-nack-count\=\(uint\)0\,\ recv-nack-count\=\(uint\)0\,\ recv-packet-rate\=\(uint\)4635\,\ have-sr\=\(boolean\)false\,\ sr-ntptime\=\(guint64\)0\,\ sr-rtptime\=\(uint\)0\,\ sr-octet-count\=\(uint\)0\,\ sr-packet-count\=\(uint\)0\,\ sent-rb\=\(boolean\)true\,\ sent-rb-fractionlost\=\(uint\)0\,\ sent-rb-packetslost\=\(int\)-1\,\ sent-rb-exthighestseq\=\(uint\)12555\,\ sent-rb-jitter\=\(uint\)489\,\ sent-rb-lsr\=\(uint\)0\,\ sent-rb-dlsr\=\(uint\)0\,\ have-rb\=\(boolean\)false\,\ rb-fractionlost\=\(uint\)0\,\ rb-packetslost\=\(int\)0\,\ rb-exthighestseq\=\(uint\)0\,\ rb-jitter\=\(uint\)0\,\ rb-lsr\=\(uint\)0\,\ rb-dlsr\=\(uint\)0\,\ rb-round-trip\=\(uint\)0\;", "application/x-rtp-source-stats\,\ ssrc\=\(uint\)4252336877\,\ internal\=\(boolean\)true\,\ validated\=\(boolean\)true\,\ received-bye\=\(boolean\)false\,\ is-csrc\=\(boolean\)false\,\ is-sender\=\(boolean\)false\,\ seqnum-base\=\(int\)-1\,\ clock-rate\=\(int\)-1\,\ octets-sent\=\(guint64\)0\,\ packets-sent\=\(guint64\)0\,\ octets-received\=\(guint64\)0\,\ packets-received\=\(guint64\)0\,\ bytes-received\=\(guint64\)0\,\ bitrate\=\(guint64\)0\,\ packets-lost\=\(int\)0\,\ jitter\=\(uint\)0\,\ sent-pli-count\=\(uint\)0\,\ recv-pli-count\=\(uint\)0\,\ sent-fir-count\=\(uint\)0\,\ recv-fir-count\=\(uint\)0\,\ sent-nack-count\=\(uint\)0\,\ recv-nack-count\=\(uint\)0\,\ recv-packet-rate\=\(uint\)0\,\ have-sr\=\(boolean\)false\,\ sr-ntptime\=\(guint64\)0\,\ sr-rtptime\=\(uint\)0\,\ sr-octet-count\=\(uint\)0\,\ sr-packet-count\=\(uint\)0\;" >, rtx-count=(uint)0, recv-rtx-req-count=(uint)0, sent-rtx-req-count=(uint)0;
/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpJitterBuffer:rtpjitterbuffer0.GstPad:sink_rtcp: caps = application/x-rtcp, ssrc=(uint)3294441468
/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager/GstRtpSession:rtpsession0: stats = application/x-rtp-session-stats, rtx-drop-count=(uint)0, sent-nack-count=(uint)0, recv-nack-count=(uint)0, source-stats=(GValueArray)< "application/x-rtp-source-stats\,\ ssrc\=\(uint\)4252336877\,\ internal\=\(boolean\)true\,\ validated\=\(boolean\)true\,\ received-bye\=\(boolean\)false\,\ is-csrc\=\(boolean\)false\,\ is-sender\=\(boolean\)false\,\ seqnum-base\=\(int\)-1\,\ clock-rate\=\(int\)-1\,\ octets-sent\=\(guint64\)0\,\ packets-sent\=\(guint64\)0\,\ octets-received\=\(guint64\)0\,\ packets-received\=\(guint64\)0\,\ bytes-received\=\(guint64\)0\,\ bitrate\=\(guint64\)0\,\ packets-lost\=\(int\)0\,\ jitter\=\(uint\)0\,\ sent-pli-count\=\(uint\)0\,\ recv-pli-count\=\(uint\)0\,\ sent-fir-count\=\(uint\)0\,\ recv-fir-count\=\(uint\)0\,\ sent-nack-count\=\(uint\)0\,\ recv-nack-count\=\(uint\)0\,\ recv-packet-rate\=\(uint\)0\,\ have-sr\=\(boolean\)false\,\ sr-ntptime\=\(guint64\)0\,\ sr-rtptime\=\(uint\)0\,\ sr-octet-count\=\(uint\)0\,\ sr-packet-count\=\(uint\)0\;" >, rtx-count=(uint)0, recv-rtx-req-count=(uint)0, sent-rtx-req-count=(uint)0;
Got EOS from element "pipeline0".
Execution ended after 0:00:30.378340000
Setting pipeline to NULL ...
Freeing pipeline ...
```
since I don't see any errors in the output, I can't figure out what's wrong
```
OS: win10
gstreamer version: 1.18.4
```https://gitlab.freedesktop.org/gstreamer/gstreamer-sharp/-/issues/58Objects inheriting from MiniObject are unrefing their native handle twice.2021-08-05T12:41:16ZAndoni Morales AlastrueyObjects inheriting from MiniObject are unrefing their native handle twice.Gst.MiniObject implements the following finalizer:
```
~MiniObject ()
{
if (!Owned)
return;
FinalizerInfo info = new FinalizerInfo (Handle);
GLib.Timeout.Add (50, new GLib.TimeoutHandler (info.Handler));
}
```
Gst.Mess...Gst.MiniObject implements the following finalizer:
```
~MiniObject ()
{
if (!Owned)
return;
FinalizerInfo info = new FinalizerInfo (Handle);
GLib.Timeout.Add (50, new GLib.TimeoutHandler (info.Handler));
}
```
Gst.Message:Gst.MiniObject also implements a similar finalizer:
```
~Message ()
{
if (!Owned)
return;
FinalizerInfo info = new FinalizerInfo (Handle);
GLib.Timeout.Add (50, new GLib.TimeoutHandler (info.Handler));
}
```
When the GC kicks in for a Gst.Message it will call both finalizers, ending with an extra unref.
see: https://github.com/GLibSharp/GtkSharp/issues/54https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/332bootstrap : cerbero bootstrap failed with build_tools2021-07-14T01:06:16ZYoungsoo Leebootstrap : cerbero bootstrap failed with build_toolsIf `setuptools.version` contains a string, an error occurs.
```python
Python 3.8.5 (default, Sep 4 2020, 02:22:02)
>>> import setuptools.version as stv
>>> stv.__version__
'50.3.2.post20201201'
```
<details><summary>Error Log</summary...If `setuptools.version` contains a string, an error occurs.
```python
Python 3.8.5 (default, Sep 4 2020, 02:22:02)
>>> import setuptools.version as stv
>>> stv.__version__
'50.3.2.post20201201'
```
<details><summary>Error Log</summary>
```Bash
(base) ☁ cerbero [master] ./cerbero-uninstalled bootstrap
Build tools install prefix will be /Users/soo/soo-works/media-server/cerbero/build/build-tools
Install prefix will be /Users/soo/soo-works/media-server/cerbero/build/dist/darwin_x86_64
File /Users/soo/.cache/cerbero-sources/cpanm already downloaded.
Installing XML::Parser, may require a password for running 'sudo /Users/soo/.cache/cerbero-sources/cpanm XML::Parser'
Password:
XML::Parser is up to date. (2.46)
Traceback (most recent call last):
File "<string>", line 20, in <module>
File "/Users/soo/soo-works/media-server/cerbero/cerbero/main.py", line 183, in main
Main(sys.argv[1:])
File "/Users/soo/soo-works/media-server/cerbero/cerbero/main.py", line 53, in __init__
self.run_command()
File "/Users/soo/soo-works/media-server/cerbero/cerbero/main.py", line 152, in run_command
res = commands.run(command, self.config, self.args)
File "/Users/soo/soo-works/media-server/cerbero/cerbero/commands/__init__.py", line 78, in run
return _commands[command].run(config, args)
File "/Users/soo/soo-works/media-server/cerbero/cerbero/commands/bootstrap.py", line 79, in run
bootstrapper.start(jobs=args.jobs)
File "/Users/soo/soo-works/media-server/cerbero/cerbero/bootstrap/build_tools.py", line 125, in start
self.insert_python_site()
File "/Users/soo/soo-works/media-server/cerbero/cerbero/bootstrap/build_tools.py", line 103, in insert_python_site
version = [int(v) for v in stv.__version__.split('.')]
File "/Users/soo/soo-works/media-server/cerbero/cerbero/bootstrap/build_tools.py", line 103, in <listcomp>
version = [int(v) for v in stv.__version__.split('.')]
ValueError: invalid literal for int() with base 10: 'post20201201'
```
</details>https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/713iOS HTTPS support issue2023-06-14T13:17:07ZRoman MinyayloviOS HTTPS support issueI have problems with HTTPS links using iOS sample №5 from gst-docs in XCode.
"Secure connection setup failed"
and
"TLS/SSL support not available; install glib-networking (6), URL: http://download.blender.org/peach/bigbuckbunny_movies...I have problems with HTTPS links using iOS sample №5 from gst-docs in XCode.
"Secure connection setup failed"
and
"TLS/SSL support not available; install glib-networking (6), URL: http://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_480p_surround-fix.avi, Redirect to: https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_480p_surround-fix.avi"https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/350Gstreamer-sys: test failed on fedora copr2021-07-02T15:21:39ZGhost UserGstreamer-sys: test failed on fedora coprhttps://download.copr.fedorainfracloud.org/results/remilauzier/gtk/fedora-34-x86_64/02312091-rust-gstreamer-sys/builder-live.log.gz
```
tests/layout.c: In function 'main':
tests/layout.c:49:52: error: 'GstCustomMeta' undeclared (first u...https://download.copr.fedorainfracloud.org/results/remilauzier/gtk/fedora-34-x86_64/02312091-rust-gstreamer-sys/builder-live.log.gz
```
tests/layout.c: In function 'main':
tests/layout.c:49:52: error: 'GstCustomMeta' undeclared (first use in this function)
49 | printf("%s;%zu;%zu\n", "GstCustomMeta", sizeof(GstCustomMeta), alignof(GstCustomMeta));
| ^~~~~~~~~~~~~
tests/layout.c:49:52: note: each undeclared identifier is reported only once for each function it appears in
tests/layout.c:71:50: error: 'GstGapFlags' undeclared (first use in this function); did you mean 'GstMapFlags'?
71 | printf("%s;%zu;%zu\n", "GstGapFlags", sizeof(GstGapFlags), alignof(GstGapFlags));
| ^~~~~~~~~~~
| GstMapFlags
tests/layout.c:144:56: error: 'GstSerializeFlags' undeclared (first use in this function)
144 | printf("%s;%zu;%zu\n", "GstSerializeFlags", sizeof(GstSerializeFlags), alignof(GstSerializeFlags));
| ^~~~~~~~~~~~~~~~~
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/157Add property to configure quality on gif encoding2021-07-09T10:31:25ZDave Patrick CabertoAdd property to configure quality on gif encodingSometimes, it could get buggy when the cpu cannot catch up with the encoder. Adding an option to change quality would semi alleviate it.Sometimes, it could get buggy when the cpu cannot catch up with the encoder. Adding an option to change quality would semi alleviate it.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1615mxfmux creates invalid files2023-05-25T09:54:26ZEdward Herveymxfmux creates invalid filesWhile going over `mxfdemux` refactoring, I noticed that `mxfmux` creates invalid files. This is an attempt at summarizing the various issues.
Note: There are various ways to store content in MXF. But `mxfmux` only works in *interleaved*...While going over `mxfdemux` refactoring, I noticed that `mxfmux` creates invalid files. This is an attempt at summarizing the various issues.
Note: There are various ways to store content in MXF. But `mxfmux` only works in *interleaved* mode, i.e. all tracks (input data) are interleaved into one *essence container*. Furthermore, it only supports *frame wrapping* of content (i.e. each input buffer is wrapped as a KLV).
# FATAL : Interleaving not time coherent
When using frame-wrapped interleaved (i.e. multiple tracks in an essence container), the various items contained in a Content Package should be time-aligned.
i.e. each Content Package should contain:
* Content for one video frame
* Optional : Content for the equivalent audio data in time
* Optional : Content for data/anc in time
But currently ... what happens is that mxfmux doesn't check the duration of the content, and instead puts one input buffer of each type in each Content Package. When the duration of each essence buffer is different... this results in breaking the above requirement. For example, we end up with each Content Package containing 40ms of 25fps video and 30ms of audio.
=> `mxfmux` should put all corresponding audio/data/anc for the given picture time/duration into the same Content Package. Also see "Different edit rates for interleaved content" below
# FATAL : No delta entries for reordered content
From "S377-1:2019 11.2.3 Index Table Segment" at the bottom of "Table 28 – Structure of Index Entry Array"
> The Temporal Offset shall be only applied for Essence Elements whose PosTableIndex value in the Element Delta is -1.
The `temporal_offset` field (used to figure out PTS from DTS) in individual index table segment entries are filled correctly ... but in order for this to be taken into account, there needs to be an associated delta entry (with a pos_table_offset of -1) in the index table segment specifying which Item (in a Content Package) should use this temporal offset.
# Not great : No delta entries for all interleaved content
This is an extension of the above. While there is no hard requirement to provide delta entries for all Items that might be present in a content package ... if we need to put one we might as well put all the other. This will also be required to be able to specify "fractional positional offsets" of Content Items which aren't perfectly aligned to the Content Package Rate (ex: 30ms audio in a 25fps table).
# FATAL : Using different "edit rates" on interleaved tracks
Currently `mxfmux` is potentially using different edit rates for tracks interleaved in the same essence container, this is not allowed
From S377-1:2019 "9.4.2 The MXF timing model"
> The value of Edit Rate shall be identical for every timeline Essence Track of
> the Top-Level File Package.
>
> The value of Edit Rate of the timeline Essence Tracks of one Top-Level File
> Package need not match the Edit Rate of the Essence Tracks of the other
> Top-Level File Packages.
From S377-1:2019 "9.5.5 Top-Level File Packages"
> 12. All Essence Tracks of a Top-Level File Package **shall** have the same
> value of Edit Rate. All other Tracks of a Top-Level File Package
> **should** have the same value of Edit Rate as the Essence Tracks.https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/905matroskamux could write tags better2022-04-12T15:40:11ZJan Schmidtmatroskamux could write tags betterWhen `matroskamux` writes tags, it does it in an element at the end of the file, but doesn't put an entry for the Tags element into the SeekHead. Without that entry, `matroskademux` doesn't output any of the tags until it reads the Tags ...When `matroskamux` writes tags, it does it in an element at the end of the file, but doesn't put an entry for the Tags element into the SeekHead. Without that entry, `matroskademux` doesn't output any of the tags until it reads the Tags element right before EOS.
Alternate approaches for writing tags would be to:
1. Write the Tags element earlier in the file (before starting to write clusters), but overwrite it with a Void element if needed (if more tags arrive later) and write another Tags element later. Possibly this could be written with padding.
2. Write multiple Tags elements into the file if needed (Tags is listed in https://www.matroska.org/technical/elements.html as permitted-to-be a Multiple instance element)
3. Write the tags at the end of the file as currently done but add the entry to the SeekHead so the demuxer can find it sooner.
1. and 2. have the benefit that tags could potentially be emitted earlier in push mode, but for all 3 options it would be good to make the muxer add the Tags element to the SeekHead as the matroska specs recommend in https://www.matroska.org/technical/ordering.htmlhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1614mediafoundation: add support dynamic bitrate control2023-10-23T09:52:42ZRoman Shpuntovmediafoundation: add support dynamic bitrate controlI use h264 encoder in UWP app. I can set 'bitrate' value only when pipeline is stopped. I want to control bitrate of video stream dynamically during playing state (encoder CBR mode). I tried to set 'bitrate' and 'max-bitrate' in 'rc-mode...I use h264 encoder in UWP app. I can set 'bitrate' value only when pipeline is stopped. I want to control bitrate of video stream dynamically during playing state (encoder CBR mode). I tried to set 'bitrate' and 'max-bitrate' in 'rc-mode' 0 and 1, but it is not changed. I use gstreamer 1.18.4 UWP. As far as I understand this is not supported by gstreamer now. This is feature request issue. Thanks!https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1613wpesrc leaves threads on pipeline shutdown2022-03-11T16:41:44ZNazar Mokrynskyiwpesrc leaves threads on pipeline shutdownWith recent wpesrc updates I see following threads being left after each pipeline run that has `wpevideosrc`:
```
14 Thread 0x7fbd75ffb640 (LWP 118762) "HashSaltStorage" 0x00007fbdb815366f in poll () from target:/lib/x86_64-linux-gn...With recent wpesrc updates I see following threads being left after each pipeline run that has `wpevideosrc`:
```
14 Thread 0x7fbd75ffb640 (LWP 118762) "HashSaltStorage" 0x00007fbdb815366f in poll () from target:/lib/x86_64-linux-gnu/libc.so.6
15 Thread 0x7fbd0a2d3640 (LWP 118763) "ebsiteDataStore" 0x00007fbdb815366f in poll () from target:/lib/x86_64-linux-gnu/libc.so.6
16 Thread 0x7fbccb7fe640 (LWP 118772) "ReceiveQueue" 0x00007fbdb815366f in poll () from target:/lib/x86_64-linux-gnu/libc.so.6
17 Thread 0x7fbd08ccf640 (LWP 2446099) "HashSaltStorage" 0x00007fbdb815366f in poll () from target:/lib/x86_64-linux-gnu/libc.so.6
18 Thread 0x7fbceaffd640 (LWP 2446100) "ebsiteDataStore" 0x00007fbdb815366f in poll () from target:/lib/x86_64-linux-gnu/libc.so.6
19 Thread 0x7fbcc9ffb640 (LWP 2446109) "ReceiveQueue" 0x00007fbdb815366f in poll () from target:/lib/x86_64-linux-gnu/libc.so.6
20 Thread 0x7fbd7cff9640 (LWP 2468090) "HashSaltStorage" 0x00007fbdb815366f in poll () from target:/lib/x86_64-linux-gnu/libc.so.6
21 Thread 0x7fbd0acd3640 (LWP 2468094) "ebsiteDataStore" 0x00007fbdb815366f in poll () from target:/lib/x86_64-linux-gnu/libc.so.6
22 Thread 0x7fbca6ffd640 (LWP 2468112) "ReceiveQueue" 0x00007fbdb815366f in poll () from target:/lib/x86_64-linux-gnu/libc.so.6
```
Looks like something isn't closing properly?:
```
Thread 16 (Thread 0x7fbccb7fe640 (LWP 118772)):
#0 0x00007fbdb815366f in poll () from target:/lib/x86_64-linux-gnu/libc.so.6
#1 0x00007fbdb858e86e in ?? () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x00007fbdb858ebf3 in g_main_loop_run () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3 0x00007fbd4f0fb4c0 in WTF::RunLoop::run() () from target:/lib/x86_64-linux-gnu/libWPEWebKit-1.0.so.3
#4 0x00007fbd4f08fb0d in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) () from target:/lib/x86_64-linux-gnu/libWPEWebKit-1.0.so.3
#5 0x00007fbd4f0fd44d in WTF::wtfThreadEntryPoint(void*) () from target:/lib/x86_64-linux-gnu/libWPEWebKit-1.0.so.3
#6 0x00007fbdb8390590 in start_thread () from target:/lib/x86_64-linux-gnu/libpthread.so.0
#7 0x00007fbdb815f223 in clone () from target:/lib/x86_64-linux-gnu/libc.so.6
Thread 15 (Thread 0x7fbd0a2d3640 (LWP 118763)):
#0 0x00007fbdb815366f in poll () from target:/lib/x86_64-linux-gnu/libc.so.6
#1 0x00007fbdb858e86e in ?? () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x00007fbdb858ebf3 in g_main_loop_run () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3 0x00007fbd4f0fb4c0 in WTF::RunLoop::run() () from target:/lib/x86_64-linux-gnu/libWPEWebKit-1.0.so.3
#4 0x00007fbd4f08fb0d in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) () from target:/lib/x86_64-linux-gnu/libWPEWebKit-1.0.so.3
#5 0x00007fbd4f0fd44d in WTF::wtfThreadEntryPoint(void*) () from target:/lib/x86_64-linux-gnu/libWPEWebKit-1.0.so.3
#6 0x00007fbdb8390590 in start_thread () from target:/lib/x86_64-linux-gnu/libpthread.so.0
#7 0x00007fbdb815f223 in clone () from target:/lib/x86_64-linux-gnu/libc.so.6
Thread 14 (Thread 0x7fbd75ffb640 (LWP 118762)):
#0 0x00007fbdb815366f in poll () from target:/lib/x86_64-linux-gnu/libc.so.6
#1 0x00007fbdb858e86e in ?? () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x00007fbdb858ebf3 in g_main_loop_run () from target:/lib/x86_64-linux-gnu/libglib-2.0.so.0
#3 0x00007fbd4f0fb4c0 in WTF::RunLoop::run() () from target:/lib/x86_64-linux-gnu/libWPEWebKit-1.0.so.3
#4 0x00007fbd4f08fb0d in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) () from target:/lib/x86_64-linux-gnu/libWPEWebKit-1.0.so.3
#5 0x00007fbd4f0fd44d in WTF::wtfThreadEntryPoint(void*) () from target:/lib/x86_64-linux-gnu/libWPEWebKit-1.0.so.3
#6 0x00007fbdb8390590 in start_thread () from target:/lib/x86_64-linux-gnu/libpthread.so.0
#7 0x00007fbdb815f223 in clone () from target:/lib/x86_64-linux-gnu/libc.so.6
```
I think this didn't happen before https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1612opencv: meson build fails on macOS2021-06-30T06:39:28ZYoungsoo Leeopencv: meson build fails on macOSI got the following error when building on mac using gst-build.
Add the c++11 flag to `meson.build`.
#### Environment
- macOS Catalina 10.15.7
- apple clang version 12.0.0 (clang-1200.0.32.29)
- [gst-build v1.19.1](https://gitlab.freede...I got the following error when building on mac using gst-build.
Add the c++11 flag to `meson.build`.
#### Environment
- macOS Catalina 10.15.7
- apple clang version 12.0.0 (clang-1200.0.32.29)
- [gst-build v1.19.1](https://gitlab.freedesktop.org/gstreamer/gst-build/-/tree/1.19.1)
- opencv 4.5.0_5 (installed from brew)
#### Error Log
```
/usr/local/Cellar/opencv/4.5.0_5/include/opencv4/opencv2/core/mat.hpp:194:59: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
_InputArray(const std::vector<std::vector<bool> >&) = delete; // not supported
^
/usr/local/Cellar/opencv/4.5.0_5/include/opencv4/opencv2/core/mat.hpp:319:44: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
_OutputArray(std::vector<bool>& vec) = delete; // not supported
^
/usr/local/Cellar/opencv/4.5.0_5/include/opencv4/opencv2/core/mat.hpp:321:54: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
_OutputArray(std::vector<std::vector<bool> >&) = delete; // not supported
^
/usr/local/Cellar/opencv/4.5.0_5/include/opencv4/opencv2/core/mat.hpp:393:49: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
_InputOutputArray(std::vector<bool>& vec) = delete; // not supported
^
/usr/local/Cellar/opencv/4.5.0_5/include/opencv4/opencv2/core/mat.hpp:1011:29: error: no template named 'initializer_list' in namespace 'std'
explicit Mat(const std::initializer_list<_Tp> list);
~~~~~^
/usr/local/Cellar/opencv/4.5.0_5/include/opencv4/opencv2/core/mat.hpp:1010:37: warning: default template arguments for a function template are a C++11 extension [-Wc++11-extensions]
template<typename _Tp, typename = typename std::enable_if<std::is_arithmetic<_Tp>::value>::type>
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/opencv/4.5.0_5/include/opencv4/opencv2/core/mat.hpp:1015:52: error: no template named 'initializer_list' in namespace 'std'
template<typename _Tp> explicit Mat(const std::initializer_list<int> sizes, const std::initializer_list<_Tp> list);
~~~~~^
/usr/local/Cellar/opencv/4.5.0_5/include/opencv4/opencv2/core/mat.hpp:1015:92: error: no template named 'initializer_list' in namespace 'std'
template<typename _Tp> explicit Mat(const std::initializer_list<int> sizes, const std::initializer_list<_Tp> list);
~~~~~^
/usr/local/Cellar/opencv/4.5.0_5/include/opencv4/opencv2/core/mat.hpp:2071:12: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
Mat(Mat&& m);
^
/usr/local/Cellar/opencv/4.5.0_5/include/opencv4/opencv2/core/mat.hpp:2072:25: warning: rvalue references are a C++11 extension [-Wc++11-extensions]
Mat& operator = (Mat&& m);
^
/usr/local/Cellar/opencv/4.5.0_5/include/opencv4/opencv2/core/mat.hpp:2226:15: error: no template named 'initializer_list' in namespace 'std'
Mat_(std::initializer_list<_Tp> values);
~~~~~^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
35 warnings and 20 errors generated.
[598/3881] Compiling C object subprojects/gst-plugins-bad/gst-libs/gst/play/libgstplay-1.0.0.dylib.p/gstplay.c.o
ninja: build stopped: subcommand failed.
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1611fdkaacdec: audio volume too low when decoding USAC(xHE-AAC) stream2021-09-24T14:39:25ZProvissyfdkaacdec: audio volume too low when decoding USAC(xHE-AAC) stream## Description
When decoding a USAC/xHE-AAC audio stream produced by exhale encoder([https://gitlab.com/ecodis/exhale](https://gitlab.com/ecodis/exhale)), the volume is so tiny which is just about 25% of the volume when decoding AAC-LC s...## Description
When decoding a USAC/xHE-AAC audio stream produced by exhale encoder([https://gitlab.com/ecodis/exhale](https://gitlab.com/ecodis/exhale)), the volume is so tiny which is just about 25% of the volume when decoding AAC-LC stream.
An audio sample is available here: [The_Piano_Sonatas_Disc_1_-_01._Sonata_for_Piano_No._1_in_C_major__K._189d-279-_I._Allegro.m4a](/uploads/da3ae141e62d10ea44991f41b9385ddb/The_Piano_Sonatas_Disc_1_-_01._Sonata_for_Piano_No._1_in_C_major__K._189d-279-_I._Allegro.m4a)
This sample works fine with Android and iOS.
USAC seems made DRC mandatory, is that the root cause?
Tested with `gst-launch-1.0 filesrc location=M4A_FILE ! decodebin ! pipewiresink`
## Details
```
$ gst-inspect-1.0 fdkaacdec
Factory Details:
Rank marginal (64)
Long-name FDK AAC audio decoder
Klass Codec/Decoder/Audio
Description FDK AAC audio decoder
Author Sebastian Dröge <sebastian@centricular.com>
Plugin Details:
Name fdkaac
Description Fraunhofer FDK AAC Codec plugin
Filename /usr/lib64/gstreamer-1.0/libgstfdkaac.so
Version 1.18.4
License LGPL
Source module gst-plugins-bad
Source release date 2021-03-15
Binary package Fedora GStreamer-plugins-bad package
Origin URL http://download.fedoraproject.org
GObject
+----GInitiallyUnowned
+----GstObject
+----GstElement
+----GstAudioDecoder
+----GstFdkAacDec
Pad Templates:
SRC template: 'src'
Availability: Always
Capabilities:
audio/x-raw
format: S16LE
layout: interleaved
rate: [ 8000, 96000 ]
channels: [ 1, 8 ]
SINK template: 'sink'
Availability: Always
Capabilities:
audio/mpeg
mpegversion: { (int)2, (int)4 }
stream-format: { (string)adts, (string)adif, (string)raw }
channels: [ 1, 8 ]
Element has no clocking capabilities.
Element has no URI handling capabilities.
Pads:
SINK: 'sink'
Pad Template: 'sink'
SRC: 'src'
Pad Template: 'src'
Element Properties:
max-errors : Max consecutive decoder errors before returning flow error
flags: readable, writable
Integer. Range: -1 - 2147483647 Default: 10
min-latency : Aggregate output data to a minimum of latency time (ns)
flags: readable, writable
Integer64. Range: 0 - 9223372036854775807 Default: 0
name : The name of the object
flags: readable, writable, 0x2000
String. Default: "fdkaacdec0"
parent : The parent of the object
flags: readable, writable, 0x2000
Object of type "GstObject"
plc : Perform packet loss concealment (if supported)
flags: readable, writable
Boolean. Default: false
tolerance : Perfect ts while timestamp jitter/imperfection within tolerance (ns)
flags: readable, writable
Integer64. Range: 0 - 9223372036854775807 Default: 0
```
```
# dnf info fdk-aac
Last metadata expiration check: 1:49:02 ago on Wed 30 Jun 2021 01:58:19 AM JST.
Installed Packages
Name : fdk-aac
Version : 2.0.2
Release : 1.fc34
Architecture : x86_64
Size : 1.2 M
Source : fdk-aac-2.0.2-1.fc34.src.rpm
Repository : @System
From repo : rpmfusion-nonfree-updates
Summary : Fraunhofer FDK AAC Codec Library
URL : https://github.com/mstorsjo/fdk-aac
License : FDK-AAC
Description : The Fraunhofer FDK AAC Codec Library ("FDK AAC Codec") is software that
: implements the MPEG Advanced Audio Coding ("AAC") encoding and decoding
: scheme for digital audio.
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/156RFC: audio decoder plugin based on Symphonia2023-01-24T19:43:51ZFrançois LaignelRFC: audio decoder plugin based on SymphoniaI've been considering this for more than a year and since it gained exposure today, I guess it's a good time to ask: what would you think about an audio decoder plugin based on [Symphonia](https://github.com/pdeljanov/Symphonia)?I've been considering this for more than a year and since it gained exposure today, I guess it's a good time to ask: what would you think about an audio decoder plugin based on [Symphonia](https://github.com/pdeljanov/Symphonia)?https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1610amc: add support for dynamic bitrate change2021-09-24T14:39:25ZRoman Shpuntovamc: add support for dynamic bitrate changeI use h264 encoder on Android 10 device. There is no effect after call `g_object_set(gstplugin, "bitrate", value, NULL);` when pipeline in playing state. The bitrate value can be set only on stopped pipeline. It would be nice to add bitr...I use h264 encoder on Android 10 device. There is no effect after call `g_object_set(gstplugin, "bitrate", value, NULL);` when pipeline in playing state. The bitrate value can be set only on stopped pipeline. It would be nice to add bitrate change feature during playing state. This is feature request issue. I use gstreamer version 1.16.3. Thanks!https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/issues/135anything about how to use ges on android2021-07-05T11:01:49Zwenxianything about how to use ges on androidNo document or example for GES using on Android, try running example c code in android device, but no luck. As simple as adding a URI clip to timeline is not working properly, the file can be loaded but no video is rending on the screen....No document or example for GES using on Android, try running example c code in android device, but no luck. As simple as adding a URI clip to timeline is not working properly, the file can be loaded but no video is rending on the screen. See through the debug log but haven't got a clue.https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/918EGL not working on Raspberry Pi 3b+2022-10-20T22:55:34ZJay DouglassEGL not working on Raspberry Pi 3b+I'm using gst-build and I can't get EGL working on GStreamer 1.18.4 on a Raspberry Pi 3b+. The 1.14 packages worked fine. I have run `rpi-update`. `dtoverlay=vc4-fkms-v3d` is set in /boot/config.txt.
Here's the meson command I'm running...I'm using gst-build and I can't get EGL working on GStreamer 1.18.4 on a Raspberry Pi 3b+. The 1.14 packages worked fine. I have run `rpi-update`. `dtoverlay=vc4-fkms-v3d` is set in /boot/config.txt.
Here's the meson command I'm running. The gles2_module_name & egl_module_name options appear to have no effect.
```
$ meson --prefix=/usr \
-D gl=enabled \
-D gl_api=gles2 \
-D gl_platform=egl \
-D gl_winsys=dispmanx \
-D gles2_module_name=/opt/vc/lib/libbrcmGLESv2.so \
-D egl_module_name=/opt/vc/lib/libbrcmEGL.so \
..
$ ldd /usr/lib/arm-linux-gnueabihf/libgstgl-1.0.so
libEGL.so.1 => /lib/arm-linux-gnueabihf/libEGL.so.1 (0x76a9e000)
$ gst-launch-1.0 videotestsrc ! glimagesink
Setting pipeline to PAUSED ...
ERROR: from element /GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink: Failed to initialize egl: EGL_NOT_INITIALIZED
Additional debug info:
../ext/gl/gstglimagesink.c(1096): _ensure_gl_setup (): /GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink
```
After building gst-plugins-base again with {egl,glesv2}.pc symlinks
```
$ sudo ln -fs /opt/vc/lib/pkgconfig/brcmegl.pc /lib/arm-linux-gnueabihf/pkgconfig/egl.pc
$ sudo ln -fs /opt/vc/lib/pkgconfig/brcmglesv2.pc /lib/arm-linux-gnueabihf/pkgconfig/glesv2.pc
$ ldd /usr/lib/arm-linux-gnueabihf/libgstgl-1.0.so
libbrcmEGL.so => /opt/vc/lib/libbrcmEGL.so (0x76ada000)
libbrcmGLESv2.so => /opt/vc/lib/libbrcmGLESv2.so (0x76ab5000)
$ gst-launch-1.0 videotestsrc ! glimagesink
Setting pipeline to PAUSED ...
* failed to add service - already in use?
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1609webrtc: Various `Since` markers are missing now2021-06-28T15:15:48ZSebastian Drögewebrtc: Various `Since` markers are missing nowThe following discussion from !2241 should be addressed:
- [ ] @slomo started a [discussion](https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241#note_974140):
> This should've stayed on the now opaque ty...The following discussion from !2241 should be addressed:
- [ ] @slomo started a [discussion](https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241#note_974140):
> This should've stayed on the now opaque typedef, and also in various other places.https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/904Demote dvdemux to marginal2021-09-24T13:34:37ZEdward HerveyDemote dvdemux to marginal`dvdemux` (and `dvdec`) both rely on libdv which hasn't been maintained in ages.
* Means it doesn't properly recognize any non-SD formats (i.e. all the DVCPro variants)
* The fact that it's not maintained means that we can't really fix/...`dvdemux` (and `dvdec`) both rely on libdv which hasn't been maintained in ages.
* Means it doesn't properly recognize any non-SD formats (i.e. all the DVCPro variants)
* The fact that it's not maintained means that we can't really fix/improve it. If ever there are any security issues that's also worrying
I propose we do like for `dvdec` and we demote the rank of `dvdemux` to marginal, and enable the gst-libav DV demuxer with a rank of SECONDARY. I've tested a few files with that demuxer and it works fine.