spa: libcamera: source: ignore frame rate

Do not parse, and do not report the negotiated frame rate. It is
completely ignored. Until support for the `FrameDurationLimits`
libcamera control is implemented, ignore any and all frame rates.
This commit is contained in:
Barnabás Pőcze 2025-08-14 18:25:27 +02:00 committed by Wim Taymans
parent ead1c144b2
commit ae7ac460b9

View file

@ -665,7 +665,6 @@ int spa_libcamera_set_format(struct impl *impl, struct port *port,
const struct format_info *info = nullptr; const struct format_info *info = nullptr;
uint32_t video_format; uint32_t video_format;
struct spa_rectangle *size = nullptr; struct spa_rectangle *size = nullptr;
struct spa_fraction *framerate = nullptr;
CameraConfiguration::Status validation; CameraConfiguration::Status validation;
int res; int res;
@ -673,18 +672,15 @@ int spa_libcamera_set_format(struct impl *impl, struct port *port,
case SPA_MEDIA_SUBTYPE_raw: case SPA_MEDIA_SUBTYPE_raw:
video_format = format->info.raw.format; video_format = format->info.raw.format;
size = &format->info.raw.size; size = &format->info.raw.size;
framerate = &format->info.raw.framerate;
break; break;
case SPA_MEDIA_SUBTYPE_mjpg: case SPA_MEDIA_SUBTYPE_mjpg:
case SPA_MEDIA_SUBTYPE_jpeg: case SPA_MEDIA_SUBTYPE_jpeg:
video_format = SPA_VIDEO_FORMAT_ENCODED; video_format = SPA_VIDEO_FORMAT_ENCODED;
size = &format->info.mjpg.size; size = &format->info.mjpg.size;
framerate = &format->info.mjpg.framerate;
break; break;
case SPA_MEDIA_SUBTYPE_h264: case SPA_MEDIA_SUBTYPE_h264:
video_format = SPA_VIDEO_FORMAT_ENCODED; video_format = SPA_VIDEO_FORMAT_ENCODED;
size = &format->info.h264.size; size = &format->info.h264.size;
framerate = &format->info.h264.framerate;
break; break;
default: default:
video_format = SPA_VIDEO_FORMAT_ENCODED; video_format = SPA_VIDEO_FORMAT_ENCODED;
@ -693,7 +689,7 @@ int spa_libcamera_set_format(struct impl *impl, struct port *port,
info = find_format_info_by_media_type(format->media_type, info = find_format_info_by_media_type(format->media_type,
format->media_subtype, video_format); format->media_subtype, video_format);
if (info == nullptr || size == nullptr || framerate == nullptr) { if (info == nullptr || size == nullptr) {
spa_log_error(impl->log, "unknown media type %d %d %d", format->media_type, spa_log_error(impl->log, "unknown media type %d %d %d", format->media_type,
format->media_subtype, video_format); format->media_subtype, video_format);
return -EINVAL; return -EINVAL;
@ -1423,20 +1419,17 @@ int port_get_format(struct impl *impl, struct port *port,
spa_pod_builder_add(builder, spa_pod_builder_add(builder,
SPA_FORMAT_VIDEO_format, SPA_POD_Id(port->current_format->info.raw.format), SPA_FORMAT_VIDEO_format, SPA_POD_Id(port->current_format->info.raw.format),
SPA_FORMAT_VIDEO_size, SPA_POD_Rectangle(&port->current_format->info.raw.size), SPA_FORMAT_VIDEO_size, SPA_POD_Rectangle(&port->current_format->info.raw.size),
SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction(&port->current_format->info.raw.framerate),
0); 0);
break; break;
case SPA_MEDIA_SUBTYPE_mjpg: case SPA_MEDIA_SUBTYPE_mjpg:
case SPA_MEDIA_SUBTYPE_jpeg: case SPA_MEDIA_SUBTYPE_jpeg:
spa_pod_builder_add(builder, spa_pod_builder_add(builder,
SPA_FORMAT_VIDEO_size, SPA_POD_Rectangle(&port->current_format->info.mjpg.size), SPA_FORMAT_VIDEO_size, SPA_POD_Rectangle(&port->current_format->info.mjpg.size),
SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction(&port->current_format->info.mjpg.framerate),
0); 0);
break; break;
case SPA_MEDIA_SUBTYPE_h264: case SPA_MEDIA_SUBTYPE_h264:
spa_pod_builder_add(builder, spa_pod_builder_add(builder,
SPA_FORMAT_VIDEO_size, SPA_POD_Rectangle(&port->current_format->info.h264.size), SPA_FORMAT_VIDEO_size, SPA_POD_Rectangle(&port->current_format->info.h264.size),
SPA_FORMAT_VIDEO_framerate, SPA_POD_Fraction(&port->current_format->info.h264.framerate),
0); 0);
break; break;
default: default: