mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2024-11-25 04:51:26 +00:00
videofx: border: Do not advertise I420 for non-zero border radius
In certain cases, roundedcorners would negotiate to I420 even when user supplied a non-zero border radius. For example, the below pipeline leads to I420 being negotiated even though a non-zero border radius was given. Ideally, this pipeline should have failed at the negotiation stage. ```bash gst-launch-1.0 -v \ videotestsrc num-buffers=1000 pattern=white ! \ video/x-raw,width=320,height=180 ! \ roundedcorners border-radius-px=10 ! videobox border-alpha=0 top=-10 left=-10 right=-10 bottom=-10 fill=yellow ! \ compositor name=comp sink_0::xpos=960 sink_0::ypos=0 sink_0::width=320 sink_0::height=180 sink_0::alpha=1.0 sink_1::xpos=960 sink_1::ypos=180 sink_1::width=320 sink_1::height=180 sink_1::alpha=1.0 \ sink_2::xpos=960 sink_2::ypos=360 sink_2::width=320 sink_2::height=180 sink_2::alpha=1.0 sink_3::xpos=0 sink_3::ypos=0 sink_3::width=960 sink_3::height=720 sink_3::alpha=1.0 ! \ video/x-raw,width=1280,height=720! x264enc ! mp4mux ! filesink location=test.mp4 \ videotestsrc num-buffers=1000 pattern=red ! \ video/x-raw,width=320,height=180 ! roundedcorners border-radius-px=10 ! comp. \ videotestsrc num-buffers=1000 pattern=blue ! \ video/x-raw,width=320,height=180 ! roundedcorners border-radius-px=10 ! comp. \ videotestsrc num-buffers=1000 pattern=green ! \ video/x-raw,width=960,height=720 ! roundedcorners border-radius-px=10 ! comp. ``` If border radius is non-zero, we should not really allow negotiation to select I420. Fix this by returning only A420 for border-radius > 0 in `transform_caps` instead of returning both like earlier. Another example of a simpler pipeline like below which would earlier work ```bash gst-launch-1.0 videotestsrc pattern=red ! videoconvert ! video/x-raw,width=1923,height=1087,format=I420 ! roundedcorners border-radius-px=40 ! video/x-raw,format=I420 ! videoconvert ! gtksink ``` now fails with ```bash WARNING: erroneous pipeline: could not link roundedcorners0 to videoconvert1, roundedcorners0 can't handle caps video/x-raw, format=(string)I420 ``` Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1211>
This commit is contained in:
parent
7ba0073052
commit
067d47f0ec
1 changed files with 1 additions and 7 deletions
|
@ -414,13 +414,7 @@ impl BaseTransformImpl for RoundedCorners {
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
s_output.set(
|
s_output.set("format", VideoFormat::A420.to_str());
|
||||||
"format",
|
|
||||||
gst::List::new([
|
|
||||||
VideoFormat::A420.to_str(),
|
|
||||||
VideoFormat::I420.to_str(),
|
|
||||||
]),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
output_caps.append_structure(s_output);
|
output_caps.append_structure(s_output);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue