]> git.pld-linux.org Git - packages/gstreamer-plugins-bad.git/blob - gstreamer-plugins-bad-dc1394.patch
- enable soup bcond
[packages/gstreamer-plugins-bad.git] / gstreamer-plugins-bad-dc1394.patch
1 --- gst-plugins-bad-0.10.6/ext/dc1394/gstdc1394.c.orig  2008-02-07 13:05:44.000000000 +0100
2 +++ gst-plugins-bad-0.10.6/ext/dc1394/gstdc1394.c       2008-02-21 23:04:01.488757978 +0100
3 @@ -468,9 +468,13 @@ gst_dc1394_change_state (GstElement * el
4        if (src->camera && !gst_dc1394_change_camera_transmission (src, FALSE)) {
5  
6          if (src->camera) {
7 -          dc1394_free_camera (src->camera);
8 +          dc1394_camera_free (src->camera);
9          }
10          src->camera = NULL;
11 +       if (src->dc1394) {
12 +         dc1394_free (src->dc1394);
13 +       }
14 +       src->dc1394 = NULL;
15  
16          if (src->caps) {
17            gst_caps_unref (src->caps);
18 @@ -484,9 +488,13 @@ gst_dc1394_change_state (GstElement * el
19      case GST_STATE_CHANGE_READY_TO_NULL:
20        GST_LOG_OBJECT (src, "State change ready to null");
21        if (src->camera) {
22 -        dc1394_free_camera (src->camera);
23 +        dc1394_camera_free (src->camera);
24        }
25        src->camera = NULL;
26 +      if (src->dc1394) {
27 +       dc1394_free (src->dc1394);
28 +      }
29 +      src->dc1394 = NULL;
30  
31        if (src->caps) {
32          gst_caps_unref (src->caps);
33 @@ -836,11 +844,10 @@ gst_dc1394_get_all_dc1394_caps ()
34  GstCaps *
35  gst_dc1394_get_cam_caps (GstDc1394 * src)
36  {
37 -
38 +  dc1394_t *dc1394 = NULL;
39    dc1394camera_t *camera = NULL;
40 -  dc1394camera_t **cameras = NULL;
41 +  dc1394camera_list_t *cameras = NULL;
42    dc1394error_t camerr;
43 -  guint numCameras;
44    gint i, j;
45    dc1394video_modes_t modes;
46    dc1394framerates_t framerates;
47 @@ -848,42 +855,29 @@ gst_dc1394_get_cam_caps (GstDc1394 * src
48  
49    gcaps = gst_caps_new_empty ();
50  
51 -  camerr = dc1394_find_cameras (&cameras, &numCameras);
52 +  dc1394 = dc1394_new();
53 +  if(dc1394 == NULL)
54 +    goto error;
55 +
56 +  camerr = dc1394_camera_enumerate (dc1394, &cameras);
57  
58    if (camerr != DC1394_SUCCESS) {
59 -    if (camerr == DC1394_NO_CAMERA) {
60 -      GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, ("There were no cameras"),
61 -          ("There were no cameras"));
62 -    } else {
63        GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND,
64            ("Can't find cameras error : %d", camerr),
65            ("Can't find cameras error : %d", camerr));
66 -    }
67      goto error;
68    }
69  
70 -  if (src->camnum > (numCameras - 1)) {
71 +  if (src->camnum > (cameras->num - 1)) {
72      GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Invalid camera number"),
73          ("Invalid camera number %d", src->camnum));
74 -
75 -    for (i = 0; i < numCameras; i++) {
76 -      if (i != src->camnum) {
77 -        dc1394_free_camera (cameras[i]);
78 -      }
79 -    }
80      goto error;
81    }
82  
83 -  camera = cameras[src->camnum];
84 -
85 -  // free the other cameras
86 -  for (i = 0; i < numCameras; i++) {
87 -    if (i != src->camnum) {
88 -      dc1394_free_camera (cameras[i]);
89 -    }
90 -  }
91 +  camera = dc1394_camera_new_unit(dc1394, cameras->ids[src->camnum].guid, cameras->ids[src->camnum].unit);
92  
93 -  free (cameras);
94 +  dc1394_camera_free_list(cameras);
95 +  cameras = NULL;
96  
97    camerr = dc1394_video_get_supported_modes (camera, &modes);
98    if (camerr != DC1394_SUCCESS) {
99 @@ -972,9 +966,11 @@ gst_dc1394_get_cam_caps (GstDc1394 * src
100    }
101  
102    if (camera) {
103 -    dc1394_free_camera (camera);
104 +    dc1394_camera_free (camera);
105    }
106  
107 +  dc1394_free(dc1394);
108 +
109    return gcaps;
110  
111  error:
112 @@ -983,10 +979,14 @@ error:
113      gst_caps_unref (gcaps);
114    }
115  
116 -  if (camera) {
117 -    dc1394_free_camera (camera);
118 -    camera = NULL;
119 -  }
120 +  if (camera)
121 +    dc1394_camera_free (camera);
122 +
123 +  if (cameras)
124 +    dc1394_camera_free_list (cameras);
125 +
126 +  if (dc1394)
127 +    dc1394_free(dc1394);
128  
129    return NULL;
130  }
131 @@ -1023,24 +1023,23 @@ gst_dc1394_framerate_frac_to_const (gint
132  static gboolean
133  gst_dc1394_open_cam_with_best_caps (GstDc1394 * src)
134  {
135 -  dc1394camera_t **cameras = NULL;
136 -  guint numCameras;
137 -  gint i;
138 +  dc1394camera_list_t *cameras = NULL;
139    gint err;
140    int framerateconst;
141  
142    GST_LOG_OBJECT (src, "Opening the camera!!!");
143  
144 +  src->dc1394 = dc1394_new();
145  
146 -  if (dc1394_find_cameras (&cameras, &numCameras) != DC1394_SUCCESS) {
147 +  if (dc1394_camera_enumerate (src->dc1394, &cameras) != DC1394_SUCCESS) {
148      GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Can't find cameras"),
149          ("Can't find cameras"));
150      goto error;
151    }
152  
153 -  GST_LOG_OBJECT (src, "Found  %d  cameras", numCameras);
154 +  GST_LOG_OBJECT (src, "Found  %d  cameras", cameras->num);
155  
156 -  if (src->camnum > (numCameras - 1)) {
157 +  if (src->camnum > (cameras->num)) {
158      GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Invalid camera number"),
159          ("Invalid camera number"));
160      goto error;
161 @@ -1048,15 +1047,10 @@ gst_dc1394_open_cam_with_best_caps (GstD
162  
163    GST_LOG_OBJECT (src, "Opening camera : %d", src->camnum);
164  
165 -  src->camera = cameras[src->camnum];
166 +  src->camera = dc1394_camera_new_unit(src->dc1394, cameras->ids[src->camnum].guid, cameras->ids[src->camnum].unit);
167  
168 -  // free the other cameras
169 -  for (i = 0; i < numCameras; i++) {
170 -    if (i != src->camnum)
171 -      dc1394_free_camera (cameras[i]);
172 -  }
173 -
174 -  free (cameras);
175 +  dc1394_camera_free_list (cameras);
176 +  cameras = NULL;
177  
178    // figure out mode
179    framerateconst = gst_dc1394_framerate_frac_to_const (src->rate_numerator,
180 @@ -1121,7 +1115,7 @@ gst_dc1394_open_cam_with_best_caps (GstD
181            "Trying to cleanup the iso_channels_and_bandwidth and retrying");
182  
183        // try to cleanup the bandwidth and retry 
184 -      err = dc1394_cleanup_iso_channels_and_bandwidth (src->camera);
185 +      err = dc1394_iso_release_all (src->camera);
186        if (err != DC1394_SUCCESS) {
187          GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
188              ("Could not cleanup bandwidth"), ("Could not cleanup bandwidth"));
189 @@ -1152,10 +1146,18 @@ gst_dc1394_open_cam_with_best_caps (GstD
190  error:
191  
192    if (src->camera) {
193 -    dc1394_free_camera (src->camera);
194 +    dc1394_camera_free (src->camera);
195      src->camera = NULL;
196    }
197  
198 +  if (cameras)
199 +    dc1394_camera_free_list(cameras);
200 +
201 +  if (src->dc1394) {
202 +    dc1394_free(src->dc1394);
203 +    src->dc1394 = NULL;
204 +  }
205 +
206    return FALSE;;
207  
208  }
209 --- gst-plugins-bad-0.10.6/ext/dc1394/gstdc1394.h.orig  2007-06-29 15:03:27.000000000 +0200
210 +++ gst-plugins-bad-0.10.6/ext/dc1394/gstdc1394.h       2008-02-21 22:50:03.805021102 +0100
211 @@ -63,6 +63,7 @@ struct _GstDc1394 {
212    gint camnum; 
213    gint bufsize; 
214  
215 +  dc1394_t * dc1394;
216    dc1394camera_t * camera; 
217  
218    GstCaps *caps;
219 --- gst-plugins-bad-0.10.6/configure.ac.orig    2008-02-21 23:13:49.062241000 +0100
220 +++ gst-plugins-bad-0.10.6/configure.ac 2008-02-22 00:54:27.874374174 +0100
221 @@ -358,7 +358,7 @@
222  dnl *** dc1394  ***
223  translit(dnm, m, l) AM_CONDITIONAL(USE_DC1394, true)
224  AG_GST_CHECK_FEATURE(DC1394, [libdc1394], dc1394, [
225 -   PKG_CHECK_MODULES(LIBDC1394, libdc1394-2 == 2.0.0-rc5, HAVE_DC1394="yes", [
226 +   PKG_CHECK_MODULES(LIBDC1394, libdc1394-2 > 2.0.0-rc5, HAVE_DC1394="yes", [
227          HAVE_DC1394="no"
228         AC_MSG_RESULT(no)
229     ])
This page took 0.043204 seconds and 3 git commands to generate.