pin_mediatype->defaultWidth = video_info->bmiHeader.biWidth;
pin_mediatype->defaultHeight = video_info->bmiHeader.biHeight;
- pin_mediatype->defaultFPS = (gint) (10000000 / video_info->AvgTimePerFrame);
+ if (video_info->AvgTimePerFrame > 0) {
+ pin_mediatype->defaultFPS = (gint) (10000000 / video_info->AvgTimePerFrame);
+ } else {
+ pin_mediatype->defaultFPS = 30;
+ }
pin_mediatype->granularityWidth = 1;
pin_mediatype->granularityHeight = 1;
pin_mediatype->defaultWidth = video_info->bmiHeader.biWidth;
pin_mediatype->defaultHeight = video_info->bmiHeader.biHeight;
- pin_mediatype->defaultFPS = (gint) (10000000 / video_info->AvgTimePerFrame);
+ if (video_info->AvgTimePerFrame > 0) {
+ pin_mediatype->defaultFPS = (gint) (10000000 / video_info->AvgTimePerFrame);
+ } else {
+ pin_mediatype->defaultFPS = 30;
+ }
pin_mediatype->granularityWidth = pin_mediatype->vscc.OutputGranularityX;
pin_mediatype->granularityHeight = pin_mediatype->vscc.OutputGranularityY;
if (IsEqualGUID (mediatype->subtype, MEDIASUBTYPE_RGB24) &&
IsEqualGUID (mediatype->formattype, FORMAT_VideoInfo))
{
+ gint fps_n;
+
video_info = (VIDEOINFOHEADER *) mediatype->pbFormat;
+ if (video_info->AvgTimePerFrame > 0) {
+ fps_n = 10000000 / video_info->AvgTimePerFrame;
+ } else {
+ fps_n = 30;
+ }
+
/* ffmpegcolorspace handles RGB24 in BIG_ENDIAN */
mediacaps = gst_caps_new_simple ("video/x-raw-rgb",
"bpp", G_TYPE_INT, 24,
"depth", G_TYPE_INT, 24,
"width", G_TYPE_INT, video_info->bmiHeader.biWidth,
"height", G_TYPE_INT, video_info->bmiHeader.biHeight,
- "framerate", GST_TYPE_FRACTION,
- (int) (10000000 / video_info->AvgTimePerFrame), 1, "endianness",
+ "framerate", GST_TYPE_FRACTION, fps_n, 1, "endianness",
G_TYPE_INT, G_BIG_ENDIAN, "red_mask", G_TYPE_INT, 255,
"green_mask", G_TYPE_INT, 65280, "blue_mask", G_TYPE_INT,
16711680, NULL);