mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-06 13:30:01 -05:00
Add h264 format
Improve format support Remove the type from the value because we can find that from the property info.
This commit is contained in:
parent
648e5a299b
commit
829adbab59
19 changed files with 363 additions and 309 deletions
|
|
@ -107,8 +107,8 @@ static const uint32_t min_uint32 = 1;
|
|||
static const uint32_t max_uint32 = UINT32_MAX;
|
||||
|
||||
static const SpaPropRangeInfo uint32_range[] = {
|
||||
{ "min", "Minimum value", 4, &min_uint32 },
|
||||
{ "max", "Maximum value", 4, &max_uint32 },
|
||||
{ "min", "Minimum value", { 4, &min_uint32 } },
|
||||
{ "max", "Maximum value", { 4, &max_uint32 } },
|
||||
};
|
||||
|
||||
enum {
|
||||
|
|
|
|||
|
|
@ -88,21 +88,21 @@ static const double min_freq = 0.0;
|
|||
static const double max_freq = 50000000.0;
|
||||
|
||||
static const SpaPropRangeInfo volume_range[] = {
|
||||
{ "min", "Minimum value", sizeof (double), &min_volume },
|
||||
{ "max", "Maximum value", sizeof (double), &max_volume },
|
||||
{ "min", "Minimum value", { sizeof (double), &min_volume } },
|
||||
{ "max", "Maximum value", { sizeof (double), &max_volume } },
|
||||
};
|
||||
|
||||
static const uint32_t wave_val_sine = 0;
|
||||
static const uint32_t wave_val_square = 1;
|
||||
|
||||
static const SpaPropRangeInfo wave_range[] = {
|
||||
{ "sine", "Sine", sizeof (uint32_t), &wave_val_sine },
|
||||
{ "square", "Square", sizeof (uint32_t), &wave_val_square },
|
||||
{ "sine", "Sine", { sizeof (uint32_t), &wave_val_sine } },
|
||||
{ "square", "Square", { sizeof (uint32_t), &wave_val_square } },
|
||||
};
|
||||
|
||||
static const SpaPropRangeInfo freq_range[] = {
|
||||
{ "min", "Minimum value", sizeof (double), &min_freq },
|
||||
{ "max", "Maximum value", sizeof (double), &max_freq },
|
||||
{ "min", "Minimum value", { sizeof (double), &min_freq } },
|
||||
{ "max", "Maximum value", { sizeof (double), &max_freq } },
|
||||
};
|
||||
|
||||
enum {
|
||||
|
|
|
|||
|
|
@ -324,7 +324,7 @@ enum_filter_format (const SpaFormat *filter, unsigned int index)
|
|||
} else if (res == SPA_RESULT_PROPERTY_UNSET) {
|
||||
|
||||
if (index < pi->n_range_values)
|
||||
video_format = *((SpaVideoFormat *)pi->range_values[index].value);
|
||||
video_format = *((SpaVideoFormat *)pi->range_values[index].val.value);
|
||||
}
|
||||
} else {
|
||||
if (index == 0)
|
||||
|
|
@ -536,20 +536,20 @@ do_frmsize:
|
|||
pi = &filter->props.prop_info[idx];
|
||||
|
||||
if (pi->range_type == SPA_PROP_RANGE_TYPE_MIN_MAX) {
|
||||
if (filter_framesize (&state->frmsize, pi->range_values[0].value,
|
||||
pi->range_values[1].value,
|
||||
if (filter_framesize (&state->frmsize, pi->range_values[0].val.value,
|
||||
pi->range_values[1].val.value,
|
||||
&step))
|
||||
goto have_size;
|
||||
} else if (pi->range_type == SPA_PROP_RANGE_TYPE_STEP) {
|
||||
if (filter_framesize (&state->frmsize, pi->range_values[0].value,
|
||||
pi->range_values[1].value,
|
||||
pi->range_values[2].value))
|
||||
if (filter_framesize (&state->frmsize, pi->range_values[0].val.value,
|
||||
pi->range_values[1].val.value,
|
||||
pi->range_values[2].val.value))
|
||||
goto have_size;
|
||||
} else if (pi->range_type == SPA_PROP_RANGE_TYPE_ENUM) {
|
||||
unsigned int i;
|
||||
for (i = 0; i < pi->n_range_values; i++) {
|
||||
if (filter_framesize (&state->frmsize, pi->range_values[i].value,
|
||||
pi->range_values[i].value,
|
||||
if (filter_framesize (&state->frmsize, pi->range_values[i].val.value,
|
||||
pi->range_values[i].val.value,
|
||||
&step))
|
||||
goto have_size;
|
||||
}
|
||||
|
|
@ -649,20 +649,20 @@ have_size:
|
|||
&step))
|
||||
goto have_framerate;
|
||||
} else if (pi->range_type == SPA_PROP_RANGE_TYPE_MIN_MAX) {
|
||||
if (filter_framerate (&state->frmival, pi->range_values[0].value,
|
||||
pi->range_values[1].value,
|
||||
if (filter_framerate (&state->frmival, pi->range_values[0].val.value,
|
||||
pi->range_values[1].val.value,
|
||||
&step))
|
||||
goto have_framerate;
|
||||
} else if (pi->range_type == SPA_PROP_RANGE_TYPE_STEP) {
|
||||
if (filter_framerate (&state->frmival, pi->range_values[0].value,
|
||||
pi->range_values[1].value,
|
||||
pi->range_values[2].value))
|
||||
if (filter_framerate (&state->frmival, pi->range_values[0].val.value,
|
||||
pi->range_values[1].val.value,
|
||||
pi->range_values[2].val.value))
|
||||
goto have_framerate;
|
||||
} else if (pi->range_type == SPA_PROP_RANGE_TYPE_ENUM) {
|
||||
unsigned int i;
|
||||
for (i = 0; i < pi->n_range_values; i++) {
|
||||
if (filter_framerate (&state->frmival, pi->range_values[i].value,
|
||||
pi->range_values[i].value,
|
||||
if (filter_framerate (&state->frmival, pi->range_values[i].val.value,
|
||||
pi->range_values[i].val.value,
|
||||
&step))
|
||||
goto have_framerate;
|
||||
}
|
||||
|
|
@ -676,20 +676,22 @@ have_framerate:
|
|||
fmt->ranges[i].description = NULL;
|
||||
if (state->frmival.type == V4L2_FRMIVAL_TYPE_DISCRETE) {
|
||||
fmt->infos[pi].range_type = SPA_PROP_RANGE_TYPE_ENUM;
|
||||
fmt->ranges[i].size = sizeof (SpaFraction);
|
||||
fmt->framerates[i].num = state->frmival.discrete.denominator;
|
||||
fmt->framerates[i].denom = state->frmival.discrete.numerator;
|
||||
fmt->ranges[i].value = &fmt->framerates[i];
|
||||
fmt->ranges[i].val.size = sizeof (SpaFraction);
|
||||
fmt->ranges[i].val.value = &fmt->framerates[i];
|
||||
i++;
|
||||
state->frmival.index++;
|
||||
} else if (state->frmival.type == V4L2_FRMIVAL_TYPE_CONTINUOUS ||
|
||||
state->frmival.type == V4L2_FRMIVAL_TYPE_STEPWISE) {
|
||||
fmt->framerates[0].num = state->frmival.stepwise.min.denominator;
|
||||
fmt->framerates[0].denom = state->frmival.stepwise.min.numerator;
|
||||
fmt->ranges[0].value = &fmt->framerates[0];
|
||||
fmt->ranges[0].val.size = sizeof (SpaFraction);
|
||||
fmt->ranges[0].val.value = &fmt->framerates[0];
|
||||
fmt->framerates[1].num = state->frmival.stepwise.max.denominator;
|
||||
fmt->framerates[1].denom = state->frmival.stepwise.max.numerator;
|
||||
fmt->ranges[1].value = &fmt->framerates[1];
|
||||
fmt->ranges[1].val.size = sizeof (SpaFraction);
|
||||
fmt->ranges[1].val.value = &fmt->framerates[1];
|
||||
if (state->frmival.type == V4L2_FRMIVAL_TYPE_CONTINUOUS) {
|
||||
fmt->infos[pi].range_type = SPA_PROP_RANGE_TYPE_MIN_MAX;
|
||||
i = 2;
|
||||
|
|
@ -697,7 +699,8 @@ have_framerate:
|
|||
fmt->infos[pi].range_type = SPA_PROP_RANGE_TYPE_STEP;
|
||||
fmt->framerates[2].num = state->frmival.stepwise.step.denominator;
|
||||
fmt->framerates[2].denom = state->frmival.stepwise.step.numerator;
|
||||
fmt->ranges[2].value = &fmt->framerates[2];
|
||||
fmt->ranges[2].val.size = sizeof (SpaFraction);
|
||||
fmt->ranges[2].val.value = &fmt->framerates[2];
|
||||
i = 3;
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -63,8 +63,8 @@ static const double max_volume = 10.0;
|
|||
static const bool default_mute = false;
|
||||
|
||||
static const SpaPropRangeInfo volume_range[] = {
|
||||
{ "min", "Minimum value", sizeof (double), &min_volume },
|
||||
{ "max", "Maximum value", sizeof (double), &max_volume },
|
||||
{ "min", "Minimum value", { sizeof (double), &min_volume } },
|
||||
{ "max", "Maximum value", { sizeof (double), &max_volume } },
|
||||
};
|
||||
|
||||
enum {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue