videolevels: Accept bpp=[1,16] when depth=16
Accept any number of bits per pixel when the depth is 16 bits. This improves the behavior of the auto option and more accurately reflects the dynamic range of the source.
This commit is contained in:
parent
9566ebc6e8
commit
54ee4258a0
@ -93,7 +93,7 @@ GST_STATIC_PAD_TEMPLATE ("sink",
|
||||
GST_PAD_ALWAYS,
|
||||
GST_STATIC_CAPS (
|
||||
"video/x-raw-gray, " \
|
||||
"bpp = (int) 16, " \
|
||||
"bpp = (int) [1, 16], " \
|
||||
"depth = (int) 16, " \
|
||||
"endianness = (int) {LITTLE_ENDIAN, BIG_ENDIAN}, " \
|
||||
"width = " GST_VIDEO_SIZE_RANGE ", " \
|
||||
@ -101,7 +101,7 @@ GST_STATIC_PAD_TEMPLATE ("sink",
|
||||
"framerate = " GST_VIDEO_FPS_RANGE \
|
||||
";" \
|
||||
"video/x-raw-gray, " \
|
||||
"bpp = (int) 16, " \
|
||||
"bpp = (int) [1, 16], " \
|
||||
"depth = (int) 16, " \
|
||||
"endianness = (int) {LITTLE_ENDIAN, BIG_ENDIAN}, " \
|
||||
"signed = (bool) {true, false}, " \
|
||||
@ -407,7 +407,7 @@ gst_videolevels_transform_caps (GstBaseTransform * base,
|
||||
GST_DEBUG ("Pad direction is src");
|
||||
|
||||
gst_caps_set_simple (newcaps,
|
||||
"bpp", G_TYPE_INT, 16,
|
||||
"bpp", GST_TYPE_INT_RANGE, 1, 16,
|
||||
"depth", G_TYPE_INT, 16,
|
||||
NULL);
|
||||
structure = gst_caps_get_structure (newcaps, 0);
|
||||
@ -423,10 +423,10 @@ gst_videolevels_transform_caps (GstBaseTransform * base,
|
||||
|
||||
/* add signed/unsigned to caps */
|
||||
g_value_init (&signed_list, GST_TYPE_LIST);
|
||||
g_value_set_int (&ival, TRUE);
|
||||
gst_value_list_append_value (&signed_list, &ival);
|
||||
g_value_set_int (&ival, FALSE);
|
||||
gst_value_list_append_value (&signed_list, &ival);
|
||||
g_value_set_int (&ival, TRUE);
|
||||
gst_value_list_append_value (&signed_list, &ival);
|
||||
gst_structure_set_value (structure, "signed", &signed_list);
|
||||
}
|
||||
GST_DEBUG_OBJECT (newcaps, "allowed caps are");
|
||||
@ -810,7 +810,9 @@ gst_videolevels_calculate_histogram (GstVideoLevels * videolevels, guint16 * dat
|
||||
gint nbins = videolevels->nbins;
|
||||
gint r;
|
||||
gint c;
|
||||
gfloat factor = nbins/65536.0f;
|
||||
gfloat factor;
|
||||
|
||||
factor = nbins/(gfloat)(1 << videolevels->bpp_in);
|
||||
|
||||
if (videolevels->histogram == NULL) {
|
||||
GST_DEBUG ("First call, allocate memory for histogram (%d bins)", nbins);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user