Stéphane Cerveau
8fa3dd4bf3
openh264: allow per feature registration
...
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038 >
2021-03-23 14:19:17 +00:00
Olivier Crête
03d710bd40
openh264dec: Accept constrained-high and progressive-high profiles
...
They're just subsets of the high profile.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1634 >
2020-11-18 15:47:36 -05:00
Mathieu Duponchelle
c096d30f6b
openh264dec: port to new request_sync_point() API
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1571 >
2020-09-10 23:44:50 +02:00
Tim-Philipp Müller
d6bae53e6b
openh264: fix build with gstreamer debug system disabled
...
See https://gitlab.freedesktop.org/gstreamer/gst-ci/merge_requests/89
2019-03-21 11:45:08 +00:00
Seungha Yang
f1d5f1faab
openh264dec: Fix build with msvc
...
Fix following build error
../subprojects/gst-plugins-bad/ext/openh264/gstopenh264dec.cpp(76): error C2121:
Note that msvc usually complains #if inside macro
2019-02-11 21:21:52 +09:00
Jan Schmidt
19382f1e91
openh264: Conditionally support the main and high profiles
...
openh264 added main/high profile support upstream after the 1.8.0
release, so detect a version higher than that and support main/high
stream input
2019-01-30 14:53:02 +11:00
Jan Schmidt
40de7e5b98
openh264: Use DecodeFrameNoDelay() API instead of DecodeFrame2
...
Replace legacy usage of DecodeFrame2 API in favour of the
recommended DecodeFrameNoDelay()
This fixes problems with DecodeFrame2() not (currently) returning
all frames in main/high streams with B-frames, and reduces latency -
previously openh264 would not return a decoded frame until the next
call to DecodeFrame2(). DecodeFrameNoDelay() returns them immediately.
2019-01-30 14:53:02 +11:00
Jan Schmidt
278cd35695
openh264dec: Hook up openh264 messages to GStreamer logging
...
Use the OpenH264 callback to pass Openh264 internal warning/error
messages through the GStreamer logging framework
2019-01-30 14:53:02 +11:00
Jan Schmidt
d4594c5c75
openh264dec: Handle B frame decoding
...
Support out-of-order decoding in OpenH264 by tracking
our internal frame reference in the OpenH264 timestamp
field.
Drain any pending frames at EOS.
2019-01-30 14:53:02 +11:00
Jan Schmidt
e75e637531
Add OpenH264 version check macro
2019-01-30 14:43:22 +11:00
Jan Schmidt
984b150e65
openh264dec: Fix up EOS handling
...
If the last frame(s) produce errors, then we need to drop them
or else we spin forever failing to decode a frame and thinking
it'll get better if we wait for more data that's never coming.
2019-01-30 03:00:49 +11:00
Edward Hervey
80b17c179a
openh264dec: Remove useless check
...
We are sure to have a frame at this point
CID #1427138
2018-01-03 16:07:24 +01:00
Sebastian Dröge
d1eb5f727c
openh264dec: Drop current frame if passing it to the decoder caused an error
...
Otherwise we will get it again later for output, however this frame will
never actually be output so we will shift timestamps.
This is especially bad if we're handling a live stream where the first
frames are not keyframes. We would output the keyframe with the
timestamp of the first frame, and everything would be too late when
arriving in the sink.
2017-08-10 23:25:13 +03:00
Sebastian Dröge
a04c48fec1
openh264dec: Don't unref NULL frame on EOS decoding error
2017-08-10 23:21:46 +03:00
Tim-Philipp Müller
9f2dfaaa7a
openh264: fix up for API changes in v1.6.0
...
Update for API changes in v1.6.0.
https://bugzilla.gnome.org/show_bug.cgi?id=768771
2016-07-18 18:36:42 +01:00
Tim-Philipp Müller
cc2b604b3b
openh264dec: minor clean-ups
...
Remove unused property getters, setters; outdated comment.
2016-04-11 20:23:45 +01:00
Tim-Philipp Müller
9617a371ca
openh264: remove unnecessary instance private structures
...
Element instance structures are not public API, so no need
for the extra indirection to hide the data.
2016-04-11 20:11:53 +01:00
Tim-Philipp Müller
41d8a49c52
openh264: fix indentation
2016-04-11 20:04:00 +01:00
Vineeth TM
8cdfb13658
bad: use new gst_element_class_add_static_pad_template()
...
https://bugzilla.gnome.org/show_bug.cgi?id=763081
2016-03-24 14:56:51 +02:00
Sebastian Dröge
9e7454a90a
openh264dec: Unref video frames and codec state in all cases
2015-07-02 18:51:44 +02:00
Sebastian Dröge
5109d9930c
openh264dec: Uninitializing the decoder can't fail and will always return 0 == cmResultSuccess
...
... but when we cast cmResultSuccess to a gboolean it will be FALSE, and make
GstVideoDecoder::stop() fail for no reason.
2015-07-02 14:16:05 +02:00
Zaheer Abbas Merali
3a4d988a29
Revert "Revert "openh264: fix to work with released versions and master of upstream""
...
This reverts commit 329f0ccba1
.
2015-01-13 11:32:03 -08:00
Tim-Philipp Müller
329f0ccba1
Revert "openh264: fix to work with released versions and master of upstream"
...
This reverts commit 15394aa705
.
The latest release (v1.1) does not have pkg-config support
yet, so this plugin won't be built with the latest release.
Cerbero uses the latest release, so this makes cerbero
builds fail, which expect the plugin to be built.
We can re-commit this once there's a release that includes
pkg-config support.
2014-12-12 20:58:49 +00:00
Zaheer Abbas Merali
15394aa705
openh264: fix to work with released versions and master of upstream
2014-12-12 10:05:23 -08:00
Sebastian Dröge
518d84c148
openh264dec: The codec can only do baseline so simplify the code a bit
...
and declare this also on the srcpad caps.
With baseline profile there are no B-frames or frame reordering.
2014-10-03 17:23:36 +03:00
Sebastian Dröge
bc8e1465dc
openh264dec: On ::finish() stop trying if the decoder returned that no output is available
2014-10-03 17:23:36 +03:00
Sebastian Dröge
088cf16bf9
openh264: Run gst-indent over everything
2014-10-03 17:23:36 +03:00
Sebastian Dröge
68baaf19c3
openh264: Add FIXME comment about missing API in openh264
2014-10-03 17:23:36 +03:00
Sebastian Dröge
0e15f47bdf
openh264dec: Try to handle frame reordering
...
As openh264 has no way to attach any IDs to input frames that we then get on
the output frames, we have to assume that the input has valid PTS. We just
take the frame with the oldest PTS, and if there is no PTS information we take
the one with the oldest DTS.
2014-10-03 17:23:36 +03:00
Sebastian Dröge
8ae2af61ce
openh264dec: Don't drop videocodec frames if we can't decode them *yet*
...
Fixes jittery playback of streams with B frames.
2014-10-03 17:23:36 +03:00
Sebastian Dröge
1dfcdb9ce3
openh264dec: GstVideoDecoder works on frames, not sub-frames (e.g. NALs)
...
And we can just pass complete AUs to the decoder without problems.
2014-10-03 17:23:36 +03:00
Sebastian Dröge
1eb740a7c3
openh264dec: As we require NAL alignment from upstream we don't need to parse anything
2014-10-03 17:23:36 +03:00
Sebastian Dröge
0a31814ef3
openh264dec: Properly drain codec on ::finish()
2014-10-03 17:23:35 +03:00
Sebastian Dröge
2285cbaa45
openh264dec: Add support for GstVideoMeta
...
This will make operation with various sinks faster for free.
2014-10-03 17:23:35 +03:00
Sebastian Dröge
4475663569
openh264dec: Optimize frame copying a bit
2014-10-03 17:23:35 +03:00
Sebastian Dröge
4c5a504a7b
openh264dec: Don't forget to unref the input state
2014-10-03 17:23:35 +03:00
Sebastian Dröge
76b5c1c511
openh264dec: Fix various crashes on ::stop()
2014-10-03 17:23:35 +03:00
Sebastian Dröge
bc5c6a0fc9
openh264dec: Remove invalid sprops-parameter-set handling
...
This only exists on RTP caps, not H264 caps.
2014-10-03 17:23:35 +03:00
Sebastian Dröge
18e7540263
openh264dec: Fix input state handling and propagation of upstream caps fields
2014-10-03 17:23:35 +03:00
Sebastian Dröge
cf4ec9b04e
openh264: Add OpenH264 based encoder/decoder elements
...
These are the openh264 elements released under the BSD-2 license
by Ericsson as part of the OpenWebRTC project.
https://github.com/EricssonResearch/openwebrtc-gst-plugins
https://bugzilla.gnome.org/show_bug.cgi?id=737788
2014-10-03 17:23:35 +03:00