Hou Qi
a75cfa522d
v4l2object: Use default colorimetry if that in caps is unknown
...
Some streams have unknown colorimetry in caps, but v4l2object sets
default values for each primaries. It will cause check colorimetry
fail when do gst_v4l2_video_colorimetry_matches().
To fix this, need to keep the unknown colorimetry in caps same as
the default value set by v4l2object.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/923 >
2021-04-01 08:50:05 +08:00
Stéphane Cerveau
31a780a061
oss4: 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-good/-/merge_requests/876 >
2021-03-29 12:45:23 +02:00
Stéphane Cerveau
55490732be
oss: 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-good/-/merge_requests/876 >
2021-03-29 12:45:23 +02:00
Stéphane Cerveau
b20209ce0d
v4l2: 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-good/-/merge_requests/876 >
2021-03-29 12:45:23 +02:00
Hou Qi
e037391364
v4l2object: Avoid colorimetry mismatch for streams with invalid colorimetry
...
video-info sets gst colorimetry to default value when colorimetry in caps
is unparsable or invalid. Then v4l2object uses this gst colorimetry to do
mapping with v4l2 colorimetry. This may cause colorimetry mismatch when
check mapped gst colorimetry with that read from caps directly.
To fix this, need to correct gst colorimetry as that parsed from video-info
when check gst_v4l2_video_colorimetry_matches().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/917 >
2021-03-24 08:40:52 +08:00
Hou Qi
4c6ff9fb58
v4l2object: Add support for hdr10 stream playback
...
Colorimetry of hdr10 video is bt2100-pq with transfer as
GST_VIDEO_TRANSFER_SMPTE2084. So map GST_VIDEO_TRANSFER_SMPTE2084
to V4L2_XFER_FUNC_SMPTE2084 to support hdr10 stream playback.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/888 >
2021-03-22 09:15:54 +08:00
Matthew Waters
612102fdbc
gst: don't use volatile to mean atomic
...
volatile is not sufficient to provide atomic guarantees and real atomics
should be used instead. GCC 11 has started warning about using volatile
with atomic operations.
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719
Discovered in https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/868
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/911 >
2021-03-18 19:52:53 +11:00
Philipp Zabel
78dec1e403
v4l2object: handle GST_VIDEO_TRANSFER_BT601
...
V4L2 makes no difference between the BT.601 and BT.709 transfer
functions [1], but GStreamer does since 1.18 [2].
Adapt gst_v4l2_object_get_colorspace() and
gst_v4l2_object_set_format_full().
[1] https://linuxtv.org/downloads/v4l-dvb-apis-new/userspace-api/v4l/colorspaces-details.html#colorspace-smpte-170m-v4l2-colorspace-smpte170m
[2] https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/724
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/856 >
2021-03-12 16:57:50 +00:00
Hou Qi
fc5a1e468b
v4l2videodec: Do not expose profiles/levels in vp8/vp9 template caps
...
Vp8/vp9 supported profiles/levels are listed in decoder sink caps, but
there is no parser for these two formats and the demuxers also don't have
these information. It causes negotiation fail between demuxers and decoder
when check caps "accept = gst_caps_is_subset (caps, template_caps);".
To fix this, need to remove profiles/levels for vp8/vp9 formats in decoder
sink caps.
Fix #854
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/887 >
2021-03-03 15:17:58 +00:00
Philipp Zabel
e885e0e1d7
v4l2videodec: fix src side frame rate negotiation
...
Negotiating v4l2h264dec ! v4l2h264enc transcoding pipelines fails in
case the encoder does not accept framerate=(fraction)0/1.
The acquired caps used for downstream negotiation are determined from
gst_v4l2_object_acquire_format(), which sets the GstVideoInfo::fps_n
and ::fps_d fields to 0.
To fix this, copy the frame rate from the sink side.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/882 >
2021-02-24 17:15:49 +01:00
Jordan Petridis
1257e50d49
rpicamsrc: depend on posix threads and vchiq_arm
...
Could only test on rpi 3b+
Close #839
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/875 >
2021-02-21 00:18:34 +00:00
Nicolas Dufresne
bb29b8f8d2
v4l2bufferpool: Silence traces around unsupported source change
...
Don't be too spamy about unsupported source change flags as these will be
commonly extended in the future.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 16:02:02 -05:00
Nicolas Dufresne
409ea3ac84
v4l2src: Move preferred resolution query before the probe
...
As we lock the DV_TIMINGS (and standards in the future), we need to probe the
caps after, otherwise, we may endup fixating to an unsupported resolution,
which would lead to a not-negotiated error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 16:02:02 -05:00
Nicolas Dufresne
b530c0ef4e
v4l2src: Calculate framerate from DV timings
...
And use this framerate in our preference. Note that we also flush
the probed caps as it seems that the format enumeration may change
when a new source change event get triggered.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 16:02:02 -05:00
Nicolas Dufresne
25696203c3
v4l2rc: Add DV_TIMINGS query and locking
...
This adds support to DV_TIMINGS query and locking. The timing width and
height is then used as a preference.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 16:02:02 -05:00
Nicolas Dufresne
b750fb2d5b
v4l2src: Force renegotiation on resolution change
...
As mandated by the specification, make sure to cycle through streamoff
/ streamon regardless if the caps have changed or not.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 16:02:02 -05:00
Nicolas Dufresne
7b8fe18d06
v4l2object: Remove unused streaming member
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 16:02:02 -05:00
Nicolas Dufresne
afb412b75d
v4l2src: Refactor to use PreferredCapsInfo structure
...
Avoid passing around a bare structure for the preference, this removes
the need to copy and free that structure and simplify the code. Also
fix a type in the structure name, Prefered -> Preferred.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 16:02:02 -05:00
Nicolas Dufresne
c0fdaffc55
v4l2src: Stub preferred resolution support
...
This stubs the ability to use preferred resolution from digital
video timings, analog TV standards or driver reported native
resolution.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 16:02:02 -05:00
Nicolas Dufresne
1b21c1b15b
v4l2: Subscribe source_change for the current input
...
When we subscribe for source-change event, we need to specify for which
input. Make sure we subscribe for the current input.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 16:02:02 -05:00
Nicolas Dufresne
c386aa43cc
v4l2src: Add input signal status detection
...
As part of the support to select a preferred size, we can also
detect the signal status. This is a split patch so that feature
is separated to ease review.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 16:02:02 -05:00
Nicolas Dufresne
293abe0675
v4l2: Add helper to query input status
...
This is a wrapper around ENUM_INPUT renamed for readability.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 16:02:02 -05:00
Nicolas Dufresne
ba3eddebc8
v4l2: Fix input/output index sign
...
This is an unsigned integer in the kernel API.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 16:02:02 -05:00
Nicolas Dufresne
1094e2548e
v4l2src: Add source resolution change support
...
This patch adds support for source resolution change detection.
Resolution change is signaled by drivers when a change in the detected
signal have been detected. This is notably seen on HDMI receivers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 16:02:02 -05:00
Nicolas Dufresne
bb1d9b398e
v4l2bufferpool: Handle resolution change event
...
This patch adds the detection, dequeuing and reporting of the SOURCE_CHANGE
event when the CH_RESOLUTION flag is set. The acquire function will now return
a new custom success called GST_V4L2_FLOW_RESOLUTION_CHANGE. In order to use
this new feature, elements must enable it by calling:
gst_v4l2_buffer_pool_enable_resolution_change (pool);
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 16:02:02 -05:00
Nicolas Dufresne
4be9bf4085
v4l2object: Add event helpers
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 16:02:02 -05:00
Nicolas Dufresne
954e38a6b9
v4l2bufferpool: use FLOW_LAST_BUFFER
...
This uses the GST_V4L2_FLOW_LAST_BUFFER alias instead of
GST_FLOW_CUSTOM_SUCCESS to make the code more readable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/870 >
2021-02-19 15:22:47 -05:00
Lucas Stach
1b1ad32b90
v4l2object: prefer NV12 over I420
...
Considering NV12 an 'odd' format is a historical artifact. This format
is now quite common, and usually preferable to I420 due to more memory
friendly access patterns.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/857 >
2021-02-19 13:12:54 -05:00
Kevin Song
c63ff9c06c
Apply 1 suggestion(s) to 1 file(s)
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/868 >
2021-02-05 00:55:49 +00:00
Kevin Song
fd6c296021
Apply 1 suggestion(s) to 1 file(s)
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/868 >
2021-02-05 00:55:49 +00:00
Bing Song
025b43e512
v4l2videoenc: support resolution change stream encode.
...
Resolution change stream transcoding will drain before send new video
frame buffer. Need encode video frame after process EOS.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/868 >
2021-02-05 00:55:49 +00:00
Bing Song
5f00810ee0
v4l2h265codec: fix HEVC profile string issue.
...
Keep HEVC profile compatible with other module.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/850 >
2021-01-27 01:22:41 +00:00
Bing Song
b87db31fbe
v4l2object: Need keep same transfer as input caps.
...
GST_VIDEO_TRANSFER_BT2020_12 and GST_VIDEO_TRANSFER_BT2020_10 will
be mapped to V4L2_XFER_FUNC_709. Need check input caps when map
V4L2_XFER_FUNC_709 back to GST_VIDEO_TRANSFER_BT2020_12 and
GST_VIDEO_TRANSFER_BT2020_10
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/816
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/841 >
2021-01-18 04:26:04 +00:00
Hou Qi
386b785e48
v4l2object: Map correct video format for RGBA
...
Map V4L2_PIX_FMT_RGBA32 pixel format to GST_VIDEO_FORMAT_RGBA instead of
GST_VIDEO_FORMAT_RGB video format to support RGBA.
Fixes #823
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/848 >
2021-01-11 09:05:05 +08:00
Hou Qi
ff1dd307f2
v4l2object: Use active resolution during fallback colorspace probe
...
For legacy drivers that don't implement ENUM_FRAMESIZE, use active
resolution to probe colorspace. This can improve the accuracy of the
result when the colorspace depends on the resolution. This fixes a
wrong colorspace issue on board with vendor bsp at resolution 2560x1440.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/830 >
2020-12-14 09:15:18 +08:00
Jose Quaresma
2a5d7b18a0
rpicamsrc: add vchostif library as it is required to build successful
...
fix: undefined reference to `vc_gencmd'
/usr/src/debug/gstreamer1.0-plugins-good/1.18.1-r0/build/../gst-plugins-good-1.18.1/sys/rpicamsrc/RaspiCamControl.c:1440: undefined reference to `vc_gencmd'
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/818 >
2020-12-01 18:24:58 +00:00
Tim Schneider
2c76f03fe2
rpicamsrc: Added "src->started = FALSE;" to gst_rpi_cam_src_stop
...
Makes the element reusable multiple times after a state change back to READY.
Fixes #105
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/823 >
2020-11-20 02:15:15 +11:00
Bing Song
8a0a7d932a
v4l2: caps negotiate wrong as interlace feature
...
gst_caps_simplify() will move interlace format before normal video
format. It will cause caps negotiate prefer interlaced caps which
isn't expected. Seperate normal caps and interlaced caps and then
merge it will keep prefer progress video format.
Add ARGB/BGRA for interlaced caps.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/802
Part-of <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/813 >
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/813 >
2020-11-16 15:12:28 +00:00
Sebastian Dröge
d885cc0f1a
v4l2codec: Garbage collect old frames if they accumulate because of codec bugs
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/778 >
2020-10-19 22:04:55 +03:00
Sebastian Dröge
bcb3428ed0
v4l2codec: Pass system frame number as timestamp and use it to retrieve back frames reliably
...
System frame numbers are supposed to be unique and correct drivers are
passing through timestamps without modification from the output/sink to the
capture/src side.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/778 >
2020-10-19 18:33:58 +03:00
Havard Graff
ed01e165b5
v4l2object: plug memory-leak
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/718 >
2020-09-10 01:29:53 +00:00
Nicolas Dufresne
6b76be620b
v4l2h264codec: Map newly defined profile/levels
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/697 >
2020-08-11 17:24:11 -04:00
Nicolas Dufresne
742d435511
v4l2: Sync headers with kernel 5.9
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/697 >
2020-08-11 17:24:03 -04:00
Víctor Manuel Jáquez Leal
078560e70a
v4l2: use GstV4l2Error in gst_v4l2_open()
...
gst_v4l2_open() is called by gst_v4l2_device_provider_probe_device(),
where the GstV4l2Object is created without an associated GstElement.
If gst_v4l2_open() fails, it raises a bus message, but without an
element, a precondition check fails on
gst_element_message_full_with_details() generating a crash if running
with fatal-warnings debug mode.
GstV4l2Error is a helper to raise error bus messages when it is
appropiated. This patch changes the direct bus messages to this
helper, and the elements will actually send the error message.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/694 >
2020-08-11 01:44:17 +00:00
Tim-Philipp Müller
435c2acdc5
rpicamsrc: hypothetical fix for data pointer calculation
...
mmal buffer header docs say data is valid for length bytes
from offset. In practice offset always seems to be 0 so
far though.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682 >
2020-07-24 17:13:04 +01:00
Tim-Philipp Müller
987a332076
rpicamsrc: mark buffers as header and keyframe/delta-unit
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682 >
2020-07-24 17:09:45 +01:00
Tim-Philipp Müller
9588108d6e
rpicamsrc: fix nal alignment of output buffers
...
We claim output buffers are nal-aligned, but that wasn't
actually true: We would push out a partial nal in case
the nal doesn't fit into the max encoder-selected output
buffer size, and then the next buffer would not start
with a sync marker. That's not right and makes h264parse
unhappy.
Instead accumulate buffers until we have a full frame
(we can't rely on the NAL_END flag, it's always set).
Fixes #768
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682 >
2020-07-24 17:09:45 +01:00
Tim-Philipp Müller
477eba2dd7
rpicamsrc: fix "Could not find component vc.ril.camera" on recent raspios
...
Make extra sure all the required mmal libs such as libmmal_vc_client.so
actually get linked and stay linked. Otherwise the above error happens
it seems.
buster (10.4) with meson 0.55 and pi ref 2020-05-27
pi-gen, 825107f04027269db77426046f5085475b1ea22f, stage5
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682 >
2020-07-23 19:11:30 +01:00
Tim-Philipp Müller
428c545e06
rpicamsrc: deviceprovider: hook up i18n properly
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682 >
2020-07-23 19:09:56 +01:00
Tim-Philipp Müller
7861f17bd7
rpicamsrc: deviceprovider: advertise (M)JPEG as well
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682 >
2020-07-23 19:09:56 +01:00