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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user