gstreamer issueshttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues2023-05-15T18:28:47Zhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/16bin: set_state to PLAYING of non-toplevel bin might stop at PAUSED2023-05-15T18:28:47ZBugzilla Migration Userbin: set_state to PLAYING of non-toplevel bin might stop at PAUSED## Submitted by Mark Nauwelaerts `@mnauw`
**[Link to original bug (#632782)](https://bugzilla.gnome.org/show_bug.cgi?id=632782)**
## Description
... particularly if NO_PREROLL element present in bin.
Since NO_PREROLL "eats" any...## Submitted by Mark Nauwelaerts `@mnauw`
**[Link to original bug (#632782)](https://bugzilla.gnome.org/show_bug.cgi?id=632782)**
## Description
... particularly if NO_PREROLL element present in bin.
Since NO_PREROLL "eats" any ASYNC, occurrence of the former tends to trigger a "fake async-done" to counter the latter, see e.g. gst_bin_add_func when adding a NO_PREROLL element, or decodebin2 change_state function forcing async_done upon NO_PREROLL state change of bin.
In any case, bin_handle_async_done is triggered, which (silently) ignores further state change to PLAYING assuming that (some) parent will take care of it later on. While that is the case in "normal" state changes, it need not be so in more "advanced/dynamic" custom bin scenarios (decodebin2, etc etc), depending on whether parents already reached PLAYING earlier or other ASYNC_START are pending somewhere else. Specific cases are in e.g. [bug 628214](https://bugzilla.gnome.org/show_bug.cgi?id=628214) or [bug 632656](https://bugzilla.gnome.org/show_bug.cgi?id=632656).
As such, this may be intended behaviour, but it might need some tweaking or some warning/documentation indicating that a good old _set_state (..., PLAYING) needs some caution as it may "fail" silently and would have to be replaced by _set_state (..., PAUSED) followed by _set_state (..., PLAYING).https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/17RFC: operation hints for GstElement2023-05-15T18:28:47ZBugzilla Migration UserRFC: operation hints for GstElement## Submitted by Stefan Kost `@ensonic`
**[Link to original bug (#634687)](https://bugzilla.gnome.org/show_bug.cgi?id=634687)**
## Description
[Bug 564749](https://bugzilla.gnome.org/show_bug.cgi?id=564749) mostly blocks on the GstTa...## Submitted by Stefan Kost `@ensonic`
**[Link to original bug (#634687)](https://bugzilla.gnome.org/show_bug.cgi?id=634687)**
## Description
[Bug 564749](https://bugzilla.gnome.org/show_bug.cgi?id=564749) mostly blocks on the GstTagReaderIface. An alternative would be to have a set of hint-flags on GstElement. Those flags can be set on the pipeline, individual bins and even elements. Bins could propagate the hints to new children and hint-changes to existing children.
The purpose of the hints is to specify the intended use case a bit more to give elements a chances for optimization. Right now gstreamer elements prepare to support everything.
Some use cases
1) quickly play something from start to end
- no need for metadata
- no seeking/no playback rate changes
- no mucking with the pipeline at all until eos
2) quick metadata reading
- no prerolling
- no seektable building
3) no caps changes (video in fullscreen)
- quicker pad_alloc or even no need to check for caps changes in basetransform
No proposal for a set of hints yet :/
### Blocking
* [Bug 532307](https://bugzilla.gnome.org/show_bug.cgi?id=532307)
* [Bug 564749](https://bugzilla.gnome.org/show_bug.cgi?id=564749)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/18tee: needs to aggregate QoS THROTTLE events from all source branches2023-05-15T18:28:47ZBugzilla Migration Usertee: needs to aggregate QoS THROTTLE events from all source branches## Submitted by Yongnian
**[Link to original bug (#638891)](https://bugzilla.gnome.org/show_bug.cgi?id=638891)**
## Description
There might be many cases that some window is invisible
(for example other window is in full screen)...## Submitted by Yongnian
**[Link to original bug (#638891)](https://bugzilla.gnome.org/show_bug.cgi?id=638891)**
## Description
There might be many cases that some window is invisible
(for example other window is in full screen), its related sink elements are still busy in rendering and upstream elements are busy in processing and decoding. Here a new event type "QOS_OBSCURED" is introduced.
The UI toolkit (Gtk+, Qt) already keeps track of windows status information: visible or invisible etc. So it would be straightforward to extend the GstVideoSink class to have a property that encourages degraded rendering. When such property is set, the "QOS_OBSCURED" event is pushed to upstream elements for handling: degraded quality for less resources.
And, for bonus points, as there is a trend in the industry toward stream switching for video over the internet, such event could be used to select appropriate media info in future.
After discussion with David Schleef (ds@entropywave.com) and Halley Zhao (halley.zhao@intel.com), the patches (based on version 0.10.28) for such mechanism are ready for video rendering degradation when it is invisible. They include below changes:
1. gstquark.h/gstquark.c: new quark string
2. gstevent.h/gstevent.c: new QoS event
3. gstvideosink.c: generate new QoS event when it encourages degraded rendering
3. gsttee.c: degrade handling rate when it receives degraded rendering requesthttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/19Macro to check check mutability in set_property functions2023-05-15T18:28:47ZBugzilla Migration UserMacro to check check mutability in set_property functions## Submitted by Olivier Crête `@ocrete`
**[Link to original bug (#644776)](https://bugzilla.gnome.org/show_bug.cgi?id=644776)**
## Description
Now that we have GST_PARAM_MUTABLE_*, we should add a way to enforce them.
I suggest...## Submitted by Olivier Crête `@ocrete`
**[Link to original bug (#644776)](https://bugzilla.gnome.org/show_bug.cgi?id=644776)**
## Description
Now that we have GST_PARAM_MUTABLE_*, we should add a way to enforce them.
I suggest having a macro like the following and putting it as the first line of the set_property() function in the various elements after adding the mutability flags.
#define GST_PARAM_CHECK_MUTABILITY(element, pspec) G_STMT_START { \
GstState state; \
\
g_return_if_fail ((element) != NULL && GST_IS_ELEMENT (element)); \
GST_OBJECT_LOCK (element); \
state = GST_STATE (element); \
GST_OBJECT_UNLOCK (element); \
g_return_if_fail (state == GST_STATE_PLAYING || \
(pspec)->flags & GST_PARAM_MUTABLE_PLAYING); \
g_return_if_fail (state >= GST_STATE_PAUSED || \
(pspec)->flags & GST_PARAM_MUTABLE_PAUSED); \
g_return_if_fail (state >= GST_STATE_READY || \
(pspec)->flags & GST_PARAM_MUTABLE_READY); \
} G_STMT_END
We may want to have a version that doesn't release the object lock if the paramspec is mutable above NULL, since I guess for many cases, we'd want to make the change atomic, but that means being a little more clever (and maybe we want to use GST_ERROR_OBJECT() instead of g_warning .. maybe g_critical?https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/20flushing seek to reverse playback direction changes frame2023-05-15T18:28:47ZBugzilla Migration Userflushing seek to reverse playback direction changes frame## Submitted by Andy Wingo Wingo `@wingo`
**[Link to original bug (#645531)](https://bugzilla.gnome.org/show_bug.cgi?id=645531)**
## Description
Steps to reproduce:
1. Open any video file in ./seek 16 file:///....
I was ab...## Submitted by Andy Wingo Wingo `@wingo`
**[Link to original bug (#645531)](https://bugzilla.gnome.org/show_bug.cgi?id=645531)**
## Description
Steps to reproduce:
1. Open any video file in ./seek 16 file:///....
I was able to reproduce this problem with MPEG4 video and AAC audio in an MPEG4 container, and with the pitivi 0.13.1-final.ogv movie, so it should be general.
2. Play forward until there is a scene with some movement, so you can tell if the frame changes or not. Hit pause.
3. Go to the "rate" box, add a minus sign before the 1.000, and hit enter.
Expected results:
The showed frame does not change.
Actual result:
The frame changes to the next one in the new play direction.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/21basesrc: - fails to send updated segment event when duration changes2023-05-15T18:28:48ZBugzilla Migration Userbasesrc: - fails to send updated segment event when duration changes## Submitted by Thomas
**[Link to original bug (#647940)](https://bugzilla.gnome.org/show_bug.cgi?id=647940)**
## Description
The issue in [Bug 345929](https://bugzilla.gnome.org/show_bug.cgi?id=345929) still stands: if you try to p...## Submitted by Thomas
**[Link to original bug (#647940)](https://bugzilla.gnome.org/show_bug.cgi?id=647940)**
## Description
The issue in [Bug 345929](https://bugzilla.gnome.org/show_bug.cgi?id=345929) still stands: if you try to play a file that is currently being written to (downloaded or created via recording for example) totem will only play up to the portion that was available at file open time.
The user story here is that I try to watch something on a laptop that is on remote machine (SSH). The network is a WLAN with random connectivity issues. If I try to watch the movie direcetly via gvfs, totem won't buffer enough data to cover a small drop in connectivity and will have trouble to resume playing when the connection is back up (it will load the network to the max and the video will lag behind the audio). If I try to download to disk and just watch the growing on-disk file (doing manual buffering, so to say), the bug mentioned here kicks in and I'd have to constantly restart the movie and skip to the part I haven't seen yet.
As a point of comparison, VLC is able to just keep playing if it notices that the file grew since it opened it.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2579avdec: better multi-threaded decoding performance for live pipelines where do...2023-05-18T11:34:29ZBugzilla Migration Useravdec: better multi-threaded decoding performance for live pipelines where downstream does not sync to clock## Submitted by Tim Müller `@tpm`
**[Link to original bug (#696501)](https://bugzilla.gnome.org/show_bug.cgi?id=696501)**
## Description
Currently we always use FF_THREAD_SLICE mode for multithreaded H.264 decoding.
This mode r...## Submitted by Tim Müller `@tpm`
**[Link to original bug (#696501)](https://bugzilla.gnome.org/show_bug.cgi?id=696501)**
## Description
Currently we always use FF_THREAD_SLICE mode for multithreaded H.264 decoding.
This mode requires encoder support, so multiple threads will only be used if the H.264 video is encoded in a suitable way (i.e. with multiple slices per frame). This is not necessarily the case, and where this is not the case decoding will be done in a single thread only, hampering performance.
We should use FF_THREAD_SLICE only for live pipelines where latency is important, and use FF_THREAD_FRAME for decoding scenarios where latency does not matter, to make sure we actually use multiple threads for decoding if possible.
### See also
* https://bugs.freedesktop.org/show_bug.cgi?id=56206https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2581[2.0] encoder elements should all use bits/sec as the unit for bitrate proper...2023-05-18T16:10:52ZBugzilla Migration User[2.0] encoder elements should all use bits/sec as the unit for bitrate properties## Submitted by Thomas Vander Stichele `@thomasvs`
**[Link to original bug (#337409)](https://bugzilla.gnome.org/show_bug.cgi?id=337409)**
## Description
theoraenc for example uses kbit/sec
it's an ABI change so we have to do i...## Submitted by Thomas Vander Stichele `@thomasvs`
**[Link to original bug (#337409)](https://bugzilla.gnome.org/show_bug.cgi?id=337409)**
## Description
theoraenc for example uses kbit/sec
it's an ABI change so we have to do it in 0.112.xhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2602mxfdemux: Parse/store colorimetry, chroma-site and interlaced-mode/field-order2023-05-25T10:05:10ZBugzilla Migration Usermxfdemux: Parse/store colorimetry, chroma-site and interlaced-mode/field-order## Submitted by Sebastian Dröge `@slomo`
**[Link to original bug (#772182)](https://bugzilla.gnome.org/show_bug.cgi?id=772182)**
## Description
See summary and [bug 771376](https://bugzilla.gnome.org/show_bug.cgi?id=771376)## Submitted by Sebastian Dröge `@slomo`
**[Link to original bug (#772182)](https://bugzilla.gnome.org/show_bug.cgi?id=772182)**
## Description
See summary and [bug 771376](https://bugzilla.gnome.org/show_bug.cgi?id=771376)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2603libav: can't play Shorten audio files, fails with: Internal GStreamer error2023-05-25T10:07:17ZBugzilla Migration Userlibav: can't play Shorten audio files, fails with: Internal GStreamer error## Submitted by David Timms
**[Link to original bug (#732388)](https://bugzilla.gnome.org/show_bug.cgi?id=732388)**
## Description
Does not seem to be a way to playback shorten lossless audio files.
$ gst-launch-0.10 -v filesrc...## Submitted by David Timms
**[Link to original bug (#732388)](https://bugzilla.gnome.org/show_bug.cgi?id=732388)**
## Description
Does not seem to be a way to playback shorten lossless audio files.
$ gst-launch-0.10 -v filesrc location=/home/a/c.shn ! ffdec_shorten ! pulsesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/ffdec_shorten:ffdec_shorten0: Internal GStreamer error: negotiation problem. Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
Additional debug info:
gstffmpegdec.c(2822): gst_ffmpegdec_chain (): /GstPipeline:pipeline0/ffdec_shorten:ffdec_shorten0:
ffdec_shorten: input format was not set before data start
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
-----
$ gst-launch-1.0 -v filesrc location=/home/a/c.shn ! ffdec_shorten ! pulsesink
WARNING: erroneous pipeline: no element "ffdec_shorten"
-----
gst-inspect -p |grep shorten
ffmpeg: ffdec_shorten: FFmpeg Shorten decoder
typefindfunctions: audio/x-shorten: shn
-----
$ gst-inspect-0.10 -a |grep shorten
ffdec_shorten: Factory Details:
ffdec_shorten: Long name: FFmpeg Shorten decoder
ffdec_shorten: Class: Codec/Decoder/Audio
ffdec_shorten: Description: FFmpeg shorten decoder
ffdec_shorten: Author(s): Wim Taymans <wim.taymans@gmail.com>, Ronald Bultje <rbultje@ronald.bitfreak.net>, Edward Hervey <bilboed@bilboed.com>
ffdec_shorten: Rank: marginal (64)
ffdec_shorten:
ffdec_shorten: Plugin Details:
ffdec_shorten: Name: ffmpeg
ffdec_shorten: Description: All FFmpeg codecs and formats (local snapshot)
ffdec_shorten: Filename: /usr/lib64/gstreamer-0.10/libgstffmpeg.so
ffdec_shorten: Version: 0.10.13
ffdec_shorten: License: GPL
ffdec_shorten: Source module: gst-ffmpeg
ffdec_shorten: Binary package: FFmpeg
ffdec_shorten: Origin URL: http://ffmpeg.org/
ffdec_shorten:
ffdec_shorten: GObject
ffdec_shorten: +----GstObject
ffdec_shorten: +----GstElement
ffdec_shorten: +----ffdec_shorten
ffdec_shorten:
ffdec_shorten: Pad Templates:
ffdec_shorten: SRC template: 'src'
ffdec_shorten: Availability: Always
ffdec_shorten: Capabilities:
ffdec_shorten: audio/x-raw-int
ffdec_shorten: channels: [ 1, 2 ]
ffdec_shorten: rate: [ 4000, 96000 ]
ffdec_shorten: signed: true
ffdec_shorten: endianness: 1234
ffdec_shorten: width: 16
ffdec_shorten: depth: 16
ffdec_shorten: audio/x-raw-int
ffdec_shorten: channels: [ 1, 2 ]
ffdec_shorten: rate: [ 4000, 96000 ]
ffdec_shorten: signed: true
ffdec_shorten: endianness: 1234
ffdec_shorten: width: 32
ffdec_shorten: depth: 32
ffdec_shorten: audio/x-raw-float
ffdec_shorten: channels: [ 1, 2 ]
ffdec_shorten: rate: [ 4000, 96000 ]
ffdec_shorten: endianness: 1234
ffdec_shorten: width: 32
ffdec_shorten: audio/x-raw-float
ffdec_shorten: channels: [ 1, 2 ]
ffdec_shorten: rate: [ 4000, 96000 ]
ffdec_shorten: endianness: 1234
ffdec_shorten: width: 64
ffdec_shorten:
ffdec_shorten: SINK template: 'sink'
ffdec_shorten: Availability: Always
ffdec_shorten: Capabilities:
ffdec_shorten: audio/x-shorten
ffdec_shorten:
ffdec_shorten:
ffdec_shorten: Element Flags:
ffdec_shorten: no flags set
ffdec_shorten:
ffdec_shorten: Element Implementation:
ffdec_shorten: Has change_state() function: 0x7fe06a731f60
ffdec_shorten: Has custom save_thyself() function: gst_element_save_thyself
ffdec_shorten: Has custom restore_thyself() function: gst_element_restore_thyself
ffdec_shorten:
ffdec_shorten: Element has no clocking capabilities.ffdec_shorten:
ffdec_shorten: Element has no indexing capabilities.
ffdec_shorten: Element has no URI handling capabilities.
ffdec_shorten:
ffdec_shorten: Pads:
ffdec_shorten: SRC: 'src'
ffdec_shorten: Implementation:
ffdec_shorten: Has custom eventfunc(): gst_ffmpegdec_src_event
ffdec_shorten: Has custom queryfunc(): gst_ffmpegdec_query
ffdec_shorten: Has custom iterintlinkfunc(): gst_pad_iterate_internal_links_default
ffdec_shorten: Has getcapsfunc(): gst_pad_get_fixed_caps_func
ffdec_shorten: Has acceptcapsfunc(): gst_pad_acceptcaps_default
ffdec_shorten: Pad Template: 'src'
ffdec_shorten: SINK: 'sink'
ffdec_shorten: Implementation:
ffdec_shorten: Has chainfunc(): gst_ffmpegdec_chain
ffdec_shorten: Has custom eventfunc(): gst_ffmpegdec_sink_event
ffdec_shorten: Has custom queryfunc(): gst_pad_query_default
ffdec_shorten: Has custom iterintlinkfunc(): gst_pad_iterate_internal_links_default
ffdec_shorten: Has setcapsfunc(): gst_ffmpegdec_setcaps
ffdec_shorten: Has acceptcapsfunc(): gst_pad_acceptcaps_default
ffdec_shorten: Pad Template: 'sink'
ffdec_shorten:
ffdec_shorten: Element Properties:
ffdec_shorten: name : The name of the object
ffdec_shorten: flags: readable, writableffdec_shorten:
ffdec_shorten: String. Default: "ffdec_shorten0"
(gst-inspect-0.10:10581): GStreamer-CRITICAL **: gst_pad_new_from_template: assertion 'GST_IS_PAD_TEMPLATE (templ)' failed
(gst-inspect-0.10:10581): GStreamer-CRITICAL **: gst_pad_template_get_caps: assertion 'GST_IS_PAD_TEMPLATE (templ)' failed
(gst-inspect-0.10:10581): GStreamer-CRITICAL **: gst_pad_set_caps: assertion 'GST_IS_PAD (pad)' failed
(gst-inspect-0.10:10581): GStreamer-CRITICAL **: gst_element_add_pad: assertion 'GST_IS_PAD (pad)' failed
INFO: cmd_ln.c(691): Parsing command line:
gst-pocketsphinx \
-samprate 8000 \
-cmn prior \
-fwdflat no \
-bestpath no \
-maxhmmpf 2000 \
-maxwpf 20
Current configuration:
[NAME] [DEFLT] [VALUE]
-agc none none
-agcthresh 2.0 2.000000e+00
-alpha 0.97 9.700000e-01
-ascale 20.0 2.000000e+01
-aw 1 1
-backtrace no no
-beam 1e-48 1.000000e-48
-bestpath yes no
-bestpathlw 9.5 9.500000e+00
-bghist no no
-ceplen 13 13
-cmn current prior
-cmninit 8.0 8.0
-compallsen no no
-debug 0
-dict
-dictcase no no
-dither no no
-doublebw no no
-ds 1 1
-fdict
-feat 1s_c_d_dd 1s_c_d_dd
-featparams
-fillprob 1e-8 1.000000e-08
-frate 100 100
-fsg
-fsgusealtpron yes yes
-fsgusefiller yes yes
-fwdflat yes no
-fwdflatbeam 1e-64 1.000000e-64
-fwdflatefwid 4 4
-fwdflatlw 8.5 8.500000e+00
-fwdflatsfwin 25 25
-fwdflatwbeam 7e-29 7.000000e-29
-fwdtree yes yes
-hmm
-input_endian little little
-jsgf
-kdmaxbbi -1 -1
-kdmaxdepth 0 0
-kdtree
-latsize 5000 5000
-lda
-ldadim 0 0
-lextreedump 0 0
-lifter 0 0
-lm
-lmctl
-lmname default default
-logbase 1.0001 1.000100e+00
-logfn
-logspec no no
-lowerf 133.33334 1.333333e+02
-lpbeam 1e-40 1.000000e-40
-lponlybeam 7e-29 7.000000e-29
-lw 6.5 6.500000e+00
-maxhmmpf -1 2000
-maxnewoov 20 20
-maxwpf -1 20
-mdef
-mean
-mfclogdir
-min_endfr 0 0
-mixw
-mixwfloor 0.0000001 1.000000e-07
-mllr
-mmap yes yes
-ncep 13 13
-nfft 512 512
-nfilt 40 40
-nwpen 1.0 1.000000e+00
-pbeam 1e-48 1.000000e-48
-pip 1.0 1.000000e+00
-pl_beam 1e-10 1.000000e-10
-pl_pbeam 1e-5 1.000000e-05
-pl_window 0 0
-rawlogdir
-remove_dc no no
-round_filters yes yes
-samprate 16000 8.000000e+03
-seed -1 -1
-sendump
-senlogdir
-senmgau
-silprob 0.005 5.000000e-03
-smoothspec no no
-svspec
-tmat
-tmatfloor 0.0001 1.000000e-04
-topn 4 4
-topn_beam 0 0
-toprule
-transform legacy legacy
-unit_area yes yes
-upperf 6855.4976 6.855498e+03
-usewdphones no no
-uw 1.0 1.000000e+00
-var
-varfloor 0.0001 1.000000e-04
-varnorm no no
-verbose no no
-warp_params
-warp_type inverse_linear inverse_linear
-wbeam 7e-29 7.000000e-29
-wip 0.65 6.500000e-01
-wlen 0.025625 2.562500e-02
(gst-inspect-0.10:10581): GLib-GObject-CRITICAL **: g_value_set_double: assertion 'G_VALUE_HOLDS_DOUBLE (value)' failed
(gst-inspect-0.10:10581): GLib-GObject-CRITICAL **: g_value_set_double: assertion 'G_VALUE_HOLDS_DOUBLE (value)' failed
(gst-inspect-0.10:10581): GLib-GObject-CRITICAL **: g_value_set_double: assertion 'G_VALUE_HOLDS_DOUBLE (value)' failedhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2617[PLUGIN-MOVE] Move dvdlpcmdec to -good2023-05-30T10:14:47ZBugzilla Migration User[PLUGIN-MOVE] Move dvdlpcmdec to -good## Submitted by Sebastian Dröge `@slomo`
**[Link to original bug (#774577)](https://bugzilla.gnome.org/show_bug.cgi?id=774577)**
## Description
There's no point in having it in -ugly.## Submitted by Sebastian Dröge `@slomo`
**[Link to original bug (#774577)](https://bugzilla.gnome.org/show_bug.cgi?id=774577)**
## Description
There's no point in having it in -ugly.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2619x264enc: High resolution with default settings (cbr and 2Mb/s) produces broke...2023-05-30T10:23:11ZBugzilla Migration Userx264enc: High resolution with default settings (cbr and 2Mb/s) produces broken stream## Submitted by Sebastian Dröge `@slomo`
**[Link to original bug (#797161)](https://bugzilla.gnome.org/show_bug.cgi?id=797161)**
## Description
See below
gst-launch-1.0 videotestsrc ! capsfilter caps=video/x-raw,width=1800,heig...## Submitted by Sebastian Dröge `@slomo`
**[Link to original bug (#797161)](https://bugzilla.gnome.org/show_bug.cgi?id=797161)**
## Description
See below
gst-launch-1.0 videotestsrc ! capsfilter caps=video/x-raw,width=1800,height=1600 ! x264enc ! rtph264pay ! rtph264depay ! queue ! decodebin ! videoconvert ! autovideosink
Lower resolution or not going through RTP makes it work fine.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/302miniobject: Locking functionality complicated, unused/misused and not having ...2023-05-31T09:02:00ZBugzilla Migration Userminiobject: Locking functionality complicated, unused/misused and not having any advantage over refcount-based writability## Submitted by Sebastian Dröge `@slomo`
**[Link to original bug (#796744)](https://bugzilla.gnome.org/show_bug.cgi?id=796744)**
## Description
While working on a solution for [bug 796692](https://bugzilla.gnome.org/show_bug.cgi?id=...## Submitted by Sebastian Dröge `@slomo`
**[Link to original bug (#796744)](https://bugzilla.gnome.org/show_bug.cgi?id=796744)**
## Description
While working on a solution for [bug 796692](https://bugzilla.gnome.org/show_bug.cgi?id=796692), I looked at the locking functionality in more detail and came to the conclusion that we better get rid of it for 2.0, and ideally for 1.0 too in one way or another (see below).
To shortly reiterate what it is for and how it works:
- it decouples reference count from writability of the objects
- it requires explicit lock/unlock calls with the EXCLUSIVE flag whenever something "takes ownership" of the object. This is basically a reference count again, that does not decide over the object lifetime. 0/1 means object is writable, > 1 means it is not
- it contains a second component which is the read/write mapping part. Once locked readable, only readable locks are possible, once writeable/readwrite all is possible. And write locks require the object to have an exclusive count of 0 or 1 to succeed
So in short: we have a second reference count for deciding writability, and at the same time keep track of read/write mapping of the object. In an atomic way.
This was introduced for bindings: apart from C++/Rust (and possibly some other languages) you don't have explicit control over the reference counting so could accidentially end up with non-writable objects although they should be writable, or you could share the object in multiple places but the refcount is still 1.
----
So why I believe we should get rid of this is the following:
1) Nobody outside gstmemory.c, gstbuffer.c and gstminiobject.c is using these functions but everybody who is doing anything with GstMemory should to modify the writability of the object correct
2) Bindings can't make automatic use of this (except for C++/Rust possibly), and nowadays don't, and also no user-code in bindings is making use of these functions. So the original goal was clearly not achieved
3) It is only used for GstMemory right now and we can't use it for anything else existing because that would break ABI. So even if it was useful, its usefulness would have no effect because most code does not work with GstMemory but other things
4) It's complicated! The implementation is (it involves an atomic spinlock among other things), but more so the concept is. That nobody currently calls that API although they should, should be enough proof of that. Many people already struggle with reference counting, and this adds yet another unfamiliar concept that is not reference counting but almost but not really
5) Current code seems to assume reference count based writability, leading to annoying bugs (if you assume reference counting, your objects are always writable although they shouldn't).
6) It does not bring any advantage compared to using the reference count for writability (for the bindings case see above). If reference count == 1, you can write and keep track of that in an instance variable. If not, you can't. Only the check for the reference count has to be atomic, the other part not. The only theoretical advantage of mixing both things is that you currently can't increase the "exclusive count" if the object is write-locked. The only place that actually checks for this to fail is in gstbuffer.c (all other code silently fails and worse things happen), and even there it is not much of an advantage: what it means is that someone has the memory write mapped, there might be 1000 other places referencing the memory and one of those gave the memory to you and now you want to write map it too. So the only thing that this can do right now is to copy the memory, but the memory is write-mapped and some other thread might do whatever it wants with the content while we're copying it. There's not much gained here.
In this case the original bug is that a write-mapped memory actually has multiple references, and that should've never happened to begin with. Anything that is done from that point onwards is just mitigation, and not very effective.
----
My proposal is to disable the locking functionality by default (make it noops and use the reference count instead, which is what code currently assumes anyway), use the struct field for keeping track for memory mapping only, and only fall back to the current behaviour if an environment variable is used.
I didn't find any code on the Internet that is making use of the API, but quite some code that should make use of it (our own code among other things, whenever dealing with GstMemory) and would potentially have subtile bugs now that would be solved by switching to reference counting instead.
Any opinions, anything I'm missing here?https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2626v4l2: Implement automatic dmabuf importation2023-06-01T16:26:05ZBugzilla Migration Userv4l2: Implement automatic dmabuf importation## Submitted by Stefan Kost `@ensonic`
**[Link to original bug (#583890)](https://bugzilla.gnome.org/show_bug.cgi?id=583890)**
## Description
v4l2src uses own mmapped buffer pool, but should ideall request buffers from xvideo for ze...## Submitted by Stefan Kost `@ensonic`
**[Link to original bug (#583890)](https://bugzilla.gnome.org/show_bug.cgi?id=583890)**
## Description
v4l2src uses own mmapped buffer pool, but should ideall request buffers from xvideo for zerocopy. initial patch follows.
### Blocking
* [Bug 796986](https://bugzilla.gnome.org/show_bug.cgi?id=796986)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2628vp9dec: "Internal GStreamer error: code not implemented" when post-processing...2023-06-02T16:50:59ZBugzilla Migration Uservp9dec: "Internal GStreamer error: code not implemented" when post-processing=true## Submitted by Florian Nierhaus
**[Link to original bug (#781559)](https://bugzilla.gnome.org/show_bug.cgi?id=781559)**
## Description
Hi,
I want to enable the post-processing in vp9dec .
When I enable it then I get:
...## Submitted by Florian Nierhaus
**[Link to original bug (#781559)](https://bugzilla.gnome.org/show_bug.cgi?id=781559)**
## Description
Hi,
I want to enable the post-processing in vp9dec .
When I enable it then I get:
ERROR default video-frame.c:161:gst_video_frame_map_id: failed to map video frame plane 0
WARN videofilter gstvideofilter.c:292:gst_video_filter_transform:`<videoconvert1>` warning: invalid video buffer received
ERROR:root:(GLib.Error('Internal GStreamer error: code not implemented. Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.', 'gst-core-error-quark', 3), 'gstvideofilter.c(292): gst_video_filter_transform (): /GstPipeline:main-pipeline/GstVide
oConvert:videoconvert1:\ninvalid video buffer received')
(GLib.Error('Internal GStreamer error: code not implemented. Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.', 'gst-core-error-quark', 3), 'gstvideofilter.c(292): gst_video_filter_transform (): /GstPipeli
ne:main-pipeline/GstVideoConvert:videoconvert1:\ninvalid video buffer received')
my pipeline works fine with post-processing disabled in vp9dec
I am using current master (v1.6.1-467-g15afee1) of libvpx and compiled it with:
--enable-vp9-postproc --enable-error-concealment --enable-postproc --enable-shared --enable-pic
Thank you and best regards,
Florianhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2633asfdemux: scan files saved from broadcast to report duration and support seeking2023-06-04T10:40:25ZBugzilla Migration Userasfdemux: scan files saved from broadcast to report duration and support seeking## Submitted by Bastien Nocera `@hadess`
**[Link to original bug (#678531)](https://bugzilla.gnome.org/show_bug.cgi?id=678531)**
## Description
But MPlayer could seek in it.## Submitted by Bastien Nocera `@hadess`
**[Link to original bug (#678531)](https://bugzilla.gnome.org/show_bug.cgi?id=678531)**
## Description
But MPlayer could seek in it.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2634dvdlpcmdec? mpegpsdemux? some vob files with lpcm audio don't preroll2023-06-04T10:42:04ZBugzilla Migration Userdvdlpcmdec? mpegpsdemux? some vob files with lpcm audio don't preroll## Submitted by Andreas Frisch `@fraxinas`
**[Link to original bug (#603528)](https://bugzilla.gnome.org/show_bug.cgi?id=603528)**
## Description
i have a vob file with an lpcm audio track only and it doesn't start playing with play...## Submitted by Andreas Frisch `@fraxinas`
**[Link to original bug (#603528)](https://bugzilla.gnome.org/show_bug.cgi?id=603528)**
## Description
i have a vob file with an lpcm audio track only and it doesn't start playing with playbin2 or decodebin2
what works fine is plugging the pipeline manually like this:
gst-launch-0.10 filesrc location=VTS_01_1.VOB ! dvddemux ! dvdlpcmdec ! multiqueue ! audioconvert ! audioresample ! alsasinkhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2639mpegdemux: MPEG-PS demuxer snaps to keyframes even for accurate seeks2023-06-06T09:05:47ZBugzilla Migration Usermpegdemux: MPEG-PS demuxer snaps to keyframes even for accurate seeks## Submitted by Vladimir Eremeev
**[Link to original bug (#636707)](https://bugzilla.gnome.org/show_bug.cgi?id=636707)**
## Description
Playbin2, loaded MPEG2 PS file responds to calls to
gst_element_seek(element,
GST_SE...## Submitted by Vladimir Eremeev
**[Link to original bug (#636707)](https://bugzilla.gnome.org/show_bug.cgi?id=636707)**
## Description
Playbin2, loaded MPEG2 PS file responds to calls to
gst_element_seek(element,
GST_SEEK_FLAG_FLUSH|GST_SEEK_FLAG_ACCURATE,
GST_SEEK_TYPE_SET, position, ... )
by positioning on I-frames only.
This can be very well seen on short clips, loaded in the seek example
( $GST_PLUGINS_BASE/tests/examples/seek/seek.c )
Example file: http://dl.dropbox.com/u/11507187/F14980_3.mpghttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2641Add support for DivX XSUB subtitles2023-06-06T09:53:18ZBugzilla Migration UserAdd support for DivX XSUB subtitles## Submitted by Bastien Nocera `@hadess`
**[Link to original bug (#628429)](https://bugzilla.gnome.org/show_bug.cgi?id=628429)**
## Description
Created attachment 169171
test.divx
$ gst-launch playbin2 'uri=file:///home/hades...## Submitted by Bastien Nocera `@hadess`
**[Link to original bug (#628429)](https://bugzilla.gnome.org/show_bug.cgi?id=628429)**
## Description
Created attachment 169171
test.divx
$ gst-launch playbin2 'uri=file:///home/hadess/Desktop/test.avi'
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
WARNING: from element /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0: No decoder available for type 'video/x-avi-unknown, fourcc=(fourcc)DXSB'.
Additional debug info:
gsturidecodebin.c(712): unknown_type_cb (): /GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstPulseSinkClock
The file was created with a "normal" avi file, a corresponding srt file, and AviAddXSUBs[1]. This is the "supported" way to embed subtitles in DIVX files for use on the PS3, and other "DivX certified" players.
(If the given file isn't good enough, feel free to ask me for another test one)
[1]: http://www.calcitapp.com/AVIAddXSubs.php (Windows app, works in WINE)
**Attachment 169171**, "test.divx":
[test.avi](/uploads/fad603faa6545fa5111fb0a5cc1ed958/test.avi)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2642mpegpsdemux: Support HD-DVD EVO files (audio and video substream types)2023-06-06T10:09:48ZBugzilla Migration Usermpegpsdemux: Support HD-DVD EVO files (audio and video substream types)## Submitted by Bastien Nocera `@hadess`
**[Link to original bug (#535372)](https://bugzilla.gnome.org/show_bug.cgi?id=535372)**
## Description
Example streams at:
http://samples.mplayerhq.hu/evob/
The MPEG system stream demu...## Submitted by Bastien Nocera `@hadess`
**[Link to original bug (#535372)](https://bugzilla.gnome.org/show_bug.cgi?id=535372)**
## Description
Example streams at:
http://samples.mplayerhq.hu/evob/
The MPEG system stream demuxer says:
0:00:04.976129301 5082 0x11b1800 WARN mpegdemux gstmpegdemux.c:913:gst_mpeg_demux_parse_pes:`<dvddemux0>` unknown stream id 0xfd
0:00:04.976154136 5082 0x11b1800 WARN mpegdemux gstmpegdemux.c:913:gst_mpeg_demux_parse_pes:`<dvddemux0>` unknown stream id 0xfd
0:00:04.976190014 5082 0x11b1800 WARN mpegdemux gstmpegdemux.c:913:gst_mpeg_demux_parse_pes:`<dvddemux0>` unknown stream id 0xfd
This is the patch for MPlayer:
http://lists.mplayerhq.hu/pipermail/mplayer-users/2007-January/064997.html