summaryrefslogtreecommitdiffstats
path: root/multimedia/gstreamer-plugins-good/files/patch-sys_oss_gstosshelper.c
blob: 579a1434b7fab3067b7afb81608af5afbc24d3ef (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
--- sys/oss/gstosshelper.c.orig Sat Apr  1 18:22:31 2006
+++ sys/oss/gstosshelper.c  Sat Apr  1 18:22:38 2006
@@ -102,6 +102,21 @@ gst_oss_helper_probe_caps (gint fd)
   else
     format_mask |= AFMT_S16_BE | AFMT_U16_BE;
 
+#if defined(AFMT_S24_LE)
+  if (G_BYTE_ORDER == G_LITTLE_ENDIAN)
+    format_mask |= AFMT_S24_LE | AFMT_U24_LE;
+  else
+    format_mask |= AFMT_S24_BE | AFMT_U24_BE;
+#endif
+
+#if defined(AFMT_S32_LE)
+  if (G_BYTE_ORDER == G_LITTLE_ENDIAN)
+    format_mask |= AFMT_S32_LE | AFMT_U32_LE;
+  else
+    format_mask |= AFMT_S32_BE | AFMT_U32_BE;
+#endif
+
+
   caps = gst_caps_new_empty ();
 
   /* assume that the most significant bit of format_mask is 0 */
@@ -202,6 +217,50 @@ gst_oss_helper_get_format_structure (uns
       sign = FALSE;
       width = 16;
       break;
+#if defined(AFMT_S24_LE)
+    case AFMT_S24_LE:
+      endianness = G_LITTLE_ENDIAN;
+      sign = TRUE;
+      width = 24;
+      break;
+    case AFMT_S24_BE:
+      endianness = G_BIG_ENDIAN;
+      sign = TRUE;
+      width = 24;
+      break;
+    case AFMT_U24_LE:
+      endianness = G_LITTLE_ENDIAN;
+      sign = FALSE;
+      width = 24;
+      break;
+    case AFMT_U24_BE:
+      endianness = G_BIG_ENDIAN;
+      sign = FALSE;
+      width = 24;
+      break;
+#endif
+#if defined(AFMT_S32_LE)
+    case AFMT_S32_LE:
+      endianness = G_LITTLE_ENDIAN;
+      sign = TRUE;
+      width = 32;
+      break;
+    case AFMT_S32_BE:
+      endianness = G_BIG_ENDIAN;
+      sign = TRUE;
+      width = 32;
+      break;
+    case AFMT_U32_LE:
+      endianness = G_LITTLE_ENDIAN;
+      sign = FALSE;
+      width = 32;
+      break;
+    case AFMT_U32_BE:
+      endianness = G_BIG_ENDIAN;
+      sign = FALSE;
+      width = 32;
+      break;
+#endif
     default:
       g_assert_not_reached ();
       return NULL;
@@ -232,6 +291,11 @@ gst_oss_helper_rate_probe_check (GstOssP
 
   probe->rates = g_array_new (FALSE, FALSE, sizeof (int));
 
+  probe->min = 8000;
+  probe->max = 100000;
+  result = FALSE;
+  goto out;
+
   probe->min = gst_oss_helper_rate_check_rate (probe, 1000);
   n_checks++;
   probe->max = gst_oss_helper_rate_check_rate (probe, 100000);
@@ -312,6 +376,7 @@ gst_oss_helper_rate_probe_check (GstOssP
 
     g_free (range);
   }
+out:
 
   while ((range = g_queue_pop_head (ranges))) {
     g_free (range);