On Tue Aug 18 21:24:18 2026 +0530, Vishnu Reddy wrote:
> iris_enum_frameintervals() advertised frame intervals using
> V4L2_FRMIVAL_TYPE_STEPWISE with step=1/MAXIMUM_FPS where MAXIMUM_FPS
> is 480. This caused client to enumerate only framerates of the form
> MAXIMUM_FPS/n (where n is a positive integer), restricting support to
> exact divisors of MAXIMUM_FPS (e.g., 480, 240, 160, 120, 96, 80, 60,
> 30, 24, 1).
> 
> Framerates that are not exact divisors of MAXIMUM_FPS, such as 29 fps,
> 25 fps, were excluded from the enumerated list. There is no hardware
> restriction to framerates that are exact divisors of MAXIMUM_FPS. This
> caused GStreamer caps negotiation to fail with an "internal data
> stream error" when encoding content at such framerates.
> 
> Fix this by using V4L2_FRMIVAL_TYPE_CONTINUOUS. With CONTINUOUS type,
> GStreamer creates a continuous framerate range [1, max_fps], allowing
> any integer framerate within the range to pass caps negotiation. The
> step field is set to 1/1 as required by the V4L2 specification for
> continuous frame intervals.
> 
> Fixes: a6882431a138 ("media: iris: Add support for 
> ENUM_FRAMESIZES/FRAMEINTERVALS for encoder")
> Cc: [email protected]
> Reviewed-by: Bryan O'Donoghue <[email protected]>
> Signed-off-by: Vishnu Reddy <[email protected]>
> Signed-off-by: Bryan O'Donoghue <[email protected]>

Patch committed.

Thanks,
Bryan O'Donoghue

 drivers/media/platform/qcom/iris/iris_vidc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

---

diff --git a/drivers/media/platform/qcom/iris/iris_vidc.c 
b/drivers/media/platform/qcom/iris/iris_vidc.c
index d39ac71a25aa..f1d7f186002d 100644
--- a/drivers/media/platform/qcom/iris/iris_vidc.c
+++ b/drivers/media/platform/qcom/iris/iris_vidc.c
@@ -438,14 +438,14 @@ static int iris_enum_frameintervals(struct file *filp, 
void *fh,
        mbpf = NUM_MBS_PER_FRAME(fival->height, fival->width);
        fps = DIV_ROUND_UP(core->iris_platform_data->max_core_mbps, mbpf);
 
-       fival->type = V4L2_FRMIVAL_TYPE_STEPWISE;
+       fival->type = V4L2_FRMIVAL_TYPE_CONTINUOUS;
        fival->stepwise.min.numerator = 1;
        fival->stepwise.min.denominator =
                        min_t(u32, fps, MAXIMUM_FPS);
        fival->stepwise.max.numerator = 1;
        fival->stepwise.max.denominator = 1;
        fival->stepwise.step.numerator = 1;
-       fival->stepwise.step.denominator = MAXIMUM_FPS;
+       fival->stepwise.step.denominator = 1;
 
        return 0;
 }
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to