KSPROPERTY_CONNECTION_STATE, &state, sizeof (state));
}
+gchar *
+ks_guid_to_string (const GUID * guid)
+{
+ return g_strdup_printf ("{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
+ guid->Data1, guid->Data2, guid->Data3, guid->Data4[0], guid->Data4[1],
+ guid->Data4[2], guid->Data4[3], guid->Data4[4], guid->Data4[5],
+ guid->Data4[6], guid->Data4[7]);
+}
+
const gchar *
ks_state_to_string (KSSTATE state)
{
return g_strdup_printf ("KSPROPSETID_%s", known_property_sets[i].name);
}
- return g_strdup_printf ("{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
- guid->Data1, guid->Data2, guid->Data3, guid->Data4[0], guid->Data4[1],
- guid->Data4[2], guid->Data4[3], guid->Data4[4], guid->Data4[5],
- guid->Data4[6], guid->Data4[7]);
+ return ks_guid_to_string (guid);
}
KSPROPERTY_PIN_CATEGORY, &pin_cat, sizeof (pin_cat)))
continue;
- GST_DEBUG ("pin[%d]: pin_comm=%d, pin_flow=%d", pin_id, pin_comm, pin_flow);
+ GST_DEBUG ("pin[%u]: pin_comm=%d, pin_flow=%d", pin_id, pin_comm, pin_flow);
if (pin_flow == KSPIN_DATAFLOW_OUT &&
memcmp (&pin_cat, &PINNAME_CAPTURE, sizeof (GUID)) == 0) {
entry->format_size = sizeof (vr->VideoInfoHeader);
entry->sample_size =
vr->VideoInfoHeader.hdr.bmiHeader.biSizeImage;
- } else
- g_assert_not_reached ();
-
- g_assert (entry->sample_size != 0);
-
- memcpy ((gpointer) & entry->vscc, src_vscc, sizeof (entry->vscc));
-
- entry->format = g_malloc (entry->format_size);
- memcpy (entry->format, src_format, entry->format_size);
+ } else {
+ gchar *guid_str;
- media_structure =
- ks_video_format_to_structure (range->SubFormat,
- range->MajorFormat);
+ guid_str = ks_guid_to_string (&range->Specifier);
+ GST_DEBUG ("pin[%u]: ignoring unknown specifier GUID %s",
+ pin_id, guid_str);
+ g_free (guid_str);
- if (media_structure == NULL) {
- g_warning ("ks_video_format_to_structure returned NULL");
- ks_video_media_type_free (entry);
- entry = NULL;
- } else if (ks_video_append_video_stream_cfg_fields (media_structure,
- &entry->vscc)) {
- entry->translated_caps = gst_caps_new_empty ();
- gst_caps_append_structure (entry->translated_caps,
- media_structure);
- } else {
- gst_structure_free (media_structure);
ks_video_media_type_free (entry);
entry = NULL;
}
- if (entry != NULL)
- ret = g_list_prepend (ret, entry);
+ if (entry != NULL) {
+ g_assert (entry->sample_size != 0);
+
+ memcpy ((gpointer) & entry->vscc, src_vscc, sizeof (entry->vscc));
+
+ entry->format = g_malloc (entry->format_size);
+ memcpy (entry->format, src_format, entry->format_size);
+
+ media_structure =
+ ks_video_format_to_structure (range->SubFormat,
+ range->MajorFormat);
+
+ if (media_structure == NULL) {
+ g_warning ("ks_video_format_to_structure returned NULL");
+ ks_video_media_type_free (entry);
+ entry = NULL;
+ } else if (ks_video_append_video_stream_cfg_fields
+ (media_structure, &entry->vscc)) {
+ entry->translated_caps = gst_caps_new_empty ();
+ gst_caps_append_structure (entry->translated_caps,
+ media_structure);
+ } else {
+ gst_structure_free (media_structure);
+ ks_video_media_type_free (entry);
+ entry = NULL;
+ }
+
+ if (entry != NULL)
+ ret = g_list_prepend (ret, entry);
+ }
}
/* REVISIT: Each KSDATARANGE should start on a 64-bit boundary */
if (IsEqualGUID (&range->Specifier, &FORMAT_VideoInfo)) {
KS_VIDEOINFOHEADER *vih = (KS_VIDEOINFOHEADER *) format;
+ /* FIXME: Need to figure out how to properly handle ranges */
+ if (vih->bmiHeader.biWidth != width || vih->bmiHeader.biHeight != height)
+ return FALSE;
+
vih->AvgTimePerFrame = gst_util_uint64_scale_int (10000000, fps_d, fps_n);
vih->dwBitRate = dwRate * vih->bmiHeader.biBitCount;
-
- g_assert (vih->bmiHeader.biWidth == width);
- g_assert (vih->bmiHeader.biHeight == height);
} else if (IsEqualGUID (&range->Specifier, &FORMAT_VideoInfo2)) {
KS_VIDEOINFOHEADER2 *vih = (KS_VIDEOINFOHEADER2 *) format;
+ /* FIXME: see above */
+ if (vih->bmiHeader.biWidth != width || vih->bmiHeader.biHeight != height)
+ return FALSE;
+
vih->AvgTimePerFrame = gst_util_uint64_scale_int (10000000, fps_d, fps_n);
vih->dwBitRate = dwRate * vih->bmiHeader.biBitCount;
-
- g_assert (vih->bmiHeader.biWidth == width);
- g_assert (vih->bmiHeader.biHeight == height);
} else if (IsEqualGUID (&range->Specifier, &FORMAT_MPEGVideo)) {
KS_MPEG1VIDEOINFO *vih = (KS_MPEG1VIDEOINFO *) format;
+ /* FIXME: see above */
+ if (vih->hdr.bmiHeader.biWidth != width ||
+ vih->hdr.bmiHeader.biHeight != height)
+ {
+ return FALSE;
+ }
+
vih->hdr.AvgTimePerFrame =
gst_util_uint64_scale_int (10000000, fps_d, fps_n);
vih->hdr.dwBitRate = dwRate * vih->hdr.bmiHeader.biBitCount;
-
- /* FIXME: set height and width? */
- g_assert (vih->hdr.bmiHeader.biWidth == width);
- g_assert (vih->hdr.bmiHeader.biHeight == height);
} else if (IsEqualGUID (&range->Specifier, &FORMAT_MPEG2Video)) {
KS_MPEGVIDEOINFO2 *vih = (KS_MPEGVIDEOINFO2 *) format;
+ /* FIXME: see above */
+ if (vih->hdr.bmiHeader.biWidth != width ||
+ vih->hdr.bmiHeader.biHeight != height)
+ {
+ return FALSE;
+ }
+
vih->hdr.AvgTimePerFrame =
gst_util_uint64_scale_int (10000000, fps_d, fps_n);
vih->hdr.dwBitRate = dwRate * vih->hdr.bmiHeader.biBitCount;
-
- /* FIXME: set height and width? */
- g_assert (vih->hdr.bmiHeader.biWidth == width);
- g_assert (vih->hdr.bmiHeader.biHeight == height);
} else {
return FALSE;
}