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)) {
7 - dc1394_free_camera (src->camera);
8 + dc1394_camera_free (src->camera);
12 + dc1394_free (src->dc1394);
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");
22 - dc1394_free_camera (src->camera);
23 + dc1394_camera_free (src->camera);
27 + dc1394_free (src->dc1394);
32 gst_caps_unref (src->caps);
33 @@ -836,11 +844,10 @@ gst_dc1394_get_all_dc1394_caps ()
35 gst_dc1394_get_cam_caps (GstDc1394 * src)
38 + dc1394_t *dc1394 = NULL;
39 dc1394camera_t *camera = NULL;
40 - dc1394camera_t **cameras = NULL;
41 + dc1394camera_list_t *cameras = NULL;
45 dc1394video_modes_t modes;
46 dc1394framerates_t framerates;
47 @@ -848,42 +855,29 @@ gst_dc1394_get_cam_caps (GstDc1394 * src
49 gcaps = gst_caps_new_empty ();
51 - camerr = dc1394_find_cameras (&cameras, &numCameras);
52 + dc1394 = dc1394_new();
56 + camerr = dc1394_camera_enumerate (dc1394, &cameras);
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"));
63 GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND,
64 ("Can't find cameras error : %d", camerr),
65 ("Can't find cameras error : %d", camerr));
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));
75 - for (i = 0; i < numCameras; i++) {
76 - if (i != src->camnum) {
77 - dc1394_free_camera (cameras[i]);
83 - camera = cameras[src->camnum];
85 - // free the other cameras
86 - for (i = 0; i < numCameras; i++) {
87 - if (i != src->camnum) {
88 - dc1394_free_camera (cameras[i]);
91 + camera = dc1394_camera_new_unit(dc1394, cameras->ids[src->camnum].guid, cameras->ids[src->camnum].unit);
94 + dc1394_camera_free_list(cameras);
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
103 - dc1394_free_camera (camera);
104 + dc1394_camera_free (camera);
107 + dc1394_free(dc1394);
112 @@ -983,10 +979,14 @@ error:
113 gst_caps_unref (gcaps);
117 - dc1394_free_camera (camera);
121 + dc1394_camera_free (camera);
124 + dc1394_camera_free_list (cameras);
127 + dc1394_free(dc1394);
131 @@ -1023,24 +1023,23 @@ gst_dc1394_framerate_frac_to_const (gint
133 gst_dc1394_open_cam_with_best_caps (GstDc1394 * src)
135 - dc1394camera_t **cameras = NULL;
138 + dc1394camera_list_t *cameras = NULL;
142 GST_LOG_OBJECT (src, "Opening the camera!!!");
144 + src->dc1394 = dc1394_new();
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"));
153 - GST_LOG_OBJECT (src, "Found %d cameras", numCameras);
154 + GST_LOG_OBJECT (src, "Found %d cameras", cameras->num);
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"));
161 @@ -1048,15 +1047,10 @@ gst_dc1394_open_cam_with_best_caps (GstD
163 GST_LOG_OBJECT (src, "Opening camera : %d", src->camnum);
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);
168 - // free the other cameras
169 - for (i = 0; i < numCameras; i++) {
170 - if (i != src->camnum)
171 - dc1394_free_camera (cameras[i]);
175 + dc1394_camera_free_list (cameras);
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");
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
193 - dc1394_free_camera (src->camera);
194 + dc1394_camera_free (src->camera);
199 + dc1394_camera_free_list(cameras);
202 + dc1394_free(src->dc1394);
203 + src->dc1394 = NULL;
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 {
216 dc1394camera_t * camera;
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
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", [