Ticket #224: 0001-Remove-support-for-libdc1394-2.0.patch
| File 0001-Remove-support-for-libdc1394-2.0.patch, 8.5 KB (added by , 15 years ago) |
|---|
-
configure
From 4096bcb4948180d5c42c9e905c8f4fd79daf4f81 Mon Sep 17 00:00:00 2001 From: Martin Lambers <marlam@marlam.de> Date: Mon, 9 May 2011 11:56:52 +0200 Subject: [PATCH 1/2] Remove support for libdc1394 < 2.0. Versions >= 2.0 have been around for ages and are even available in Debian *old*stable. --- configure | 12 +---- libavdevice/libdc1394.c | 145 +++-------------------------------------------- 2 files changed, 9 insertions(+), 148 deletions(-) diff --git a/configure b/configure index 165fc26..7a6c4f0 100755
a b HAVE_LIST=" 1077 1077 isatty 1078 1078 kbhit 1079 1079 ldbrx 1080 libdc1394_11081 libdc1394_21082 1080 llrint 1083 1081 llrintf 1084 1082 local_aligned_16 … … check_mathfunc truncf 2901 2899 enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32 2902 2900 enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 2903 2901 enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; } 2902 enabled libdc1394 && require_pkg_config libdc1394-2 dc1394/dc1394.h dc1394_new 2904 2903 enabled libdirac && require_pkg_config dirac \ 2905 2904 "libdirac_decoder/dirac_parser.h libdirac_encoder/dirac_encoder.h" \ 2906 2905 "dirac_decoder_init dirac_encoder_init" … … enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs 2932 2931 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore 2933 2932 enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib 2934 2933 2935 # libdc1394 check2936 if enabled libdc1394; then2937 { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&2938 enable libdc1394_2; } ||2939 { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&2940 enable libdc1394_1; } ||2941 die "ERROR: No version of libdc1394 found "2942 fi2943 2944 2934 if check_pkg_config sdl SDL_version.h SDL_Linked_Version; then 2945 2935 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags && 2946 2936 enable sdl && -
libavdevice/libdc1394.c
diff --git a/libavdevice/libdc1394.c b/libavdevice/libdc1394.c index abd82dc..158db09 100644
a b 2 2 * IIDC1394 grab interface (uses libdc1394 and libraw1394) 3 3 * Copyright (c) 2004 Roman Shaposhnik 4 4 * Copyright (c) 2008 Alessandro Sappia 5 * Copyright (c) 2011 Martin Lambers 5 6 * 6 7 * This file is part of FFmpeg. 7 8 * … … 23 24 #include "config.h" 24 25 #include "libavformat/avformat.h" 25 26 26 #if HAVE_LIBDC1394_227 27 #include <dc1394/dc1394.h> 28 #elif HAVE_LIBDC1394_129 #include <libraw1394/raw1394.h>30 #include <libdc1394/dc1394_control.h>31 32 #define DC1394_VIDEO_MODE_320x240_YUV422 MODE_320x240_YUV42233 #define DC1394_VIDEO_MODE_640x480_YUV411 MODE_640x480_YUV41134 #define DC1394_VIDEO_MODE_640x480_YUV422 MODE_640x480_YUV42235 #define DC1394_FRAMERATE_1_875 FRAMERATE_1_87536 #define DC1394_FRAMERATE_3_75 FRAMERATE_3_7537 #define DC1394_FRAMERATE_7_5 FRAMERATE_7_538 #define DC1394_FRAMERATE_15 FRAMERATE_1539 #define DC1394_FRAMERATE_30 FRAMERATE_3040 #define DC1394_FRAMERATE_60 FRAMERATE_6041 #define DC1394_FRAMERATE_120 FRAMERATE_12042 #define DC1394_FRAMERATE_240 FRAMERATE_24043 #endif44 28 45 29 #undef free 46 30 47 31 typedef struct dc1394_data { 48 #if HAVE_LIBDC1394_149 raw1394handle_t handle;50 dc1394_cameracapture camera;51 #elif HAVE_LIBDC1394_252 32 dc1394_t *d; 53 33 dc1394camera_t *camera; 54 34 dc1394video_frame_t *frame; 55 #endif56 35 int current_frame; 57 36 int fps; 58 37 … … out: 142 121 return -1; 143 122 } 144 123 145 #if HAVE_LIBDC1394_1 146 static int dc1394_v1_read_header(AVFormatContext *c, AVFormatParameters * ap) 147 { 148 dc1394_data* dc1394 = c->priv_data; 149 AVStream* vst; 150 nodeid_t* camera_nodes; 151 int res; 152 struct dc1394_frame_format *fmt = NULL; 153 struct dc1394_frame_rate *fps = NULL; 154 155 if (dc1394_read_common(c,ap,&fmt,&fps) != 0) 156 return -1; 157 158 /* Now let us prep the hardware. */ 159 dc1394->handle = dc1394_create_handle(0); /* FIXME: gotta have ap->port */ 160 if (!dc1394->handle) { 161 av_log(c, AV_LOG_ERROR, "Can't acquire dc1394 handle on port %d\n", 0 /* ap->port */); 162 goto out; 163 } 164 camera_nodes = dc1394_get_camera_nodes(dc1394->handle, &res, 1); 165 if (!camera_nodes || camera_nodes[ap->channel] == DC1394_NO_CAMERA) { 166 av_log(c, AV_LOG_ERROR, "There's no IIDC camera on the channel %d\n", ap->channel); 167 goto out_handle; 168 } 169 res = dc1394_dma_setup_capture(dc1394->handle, camera_nodes[ap->channel], 170 0, 171 FORMAT_VGA_NONCOMPRESSED, 172 fmt->frame_size_id, 173 SPEED_400, 174 fps->frame_rate_id, 8, 1, 175 c->filename, 176 &dc1394->camera); 177 dc1394_free_camera_nodes(camera_nodes); 178 if (res != DC1394_SUCCESS) { 179 av_log(c, AV_LOG_ERROR, "Can't prepare camera for the DMA capture\n"); 180 goto out_handle; 181 } 182 183 res = dc1394_start_iso_transmission(dc1394->handle, dc1394->camera.node); 184 if (res != DC1394_SUCCESS) { 185 av_log(c, AV_LOG_ERROR, "Can't start isochronous transmission\n"); 186 goto out_handle_dma; 187 } 188 189 return 0; 190 191 out_handle_dma: 192 dc1394_dma_unlisten(dc1394->handle, &dc1394->camera); 193 dc1394_dma_release_camera(dc1394->handle, &dc1394->camera); 194 out_handle: 195 dc1394_destroy_handle(dc1394->handle); 196 out: 197 return -1; 198 } 199 200 static int dc1394_v1_read_packet(AVFormatContext *c, AVPacket *pkt) 201 { 202 struct dc1394_data *dc1394 = c->priv_data; 203 int res; 204 205 /* discard stale frame */ 206 if (dc1394->current_frame++) { 207 if (dc1394_dma_done_with_buffer(&dc1394->camera) != DC1394_SUCCESS) 208 av_log(c, AV_LOG_ERROR, "failed to release %d frame\n", dc1394->current_frame); 209 } 210 211 res = dc1394_dma_single_capture(&dc1394->camera); 212 213 if (res == DC1394_SUCCESS) { 214 dc1394->packet.data = (uint8_t *)(dc1394->camera.capture_buffer); 215 dc1394->packet.pts = (dc1394->current_frame * 1000000) / dc1394->fps; 216 res = dc1394->packet.size; 217 } else { 218 av_log(c, AV_LOG_ERROR, "DMA capture failed\n"); 219 dc1394->packet.data = NULL; 220 res = -1; 221 } 222 223 *pkt = dc1394->packet; 224 return res; 225 } 226 227 static int dc1394_v1_close(AVFormatContext * context) 228 { 229 struct dc1394_data *dc1394 = context->priv_data; 230 231 dc1394_stop_iso_transmission(dc1394->handle, dc1394->camera.node); 232 dc1394_dma_unlisten(dc1394->handle, &dc1394->camera); 233 dc1394_dma_release_camera(dc1394->handle, &dc1394->camera); 234 dc1394_destroy_handle(dc1394->handle); 235 236 return 0; 237 } 238 239 #elif HAVE_LIBDC1394_2 240 static int dc1394_v2_read_header(AVFormatContext *c, AVFormatParameters * ap) 124 static int dc1394_read_header(AVFormatContext *c, AVFormatParameters * ap) 241 125 { 242 126 dc1394_data* dc1394 = c->priv_data; 243 127 dc1394camera_list_t *list; … … out: 310 194 return -1; 311 195 } 312 196 313 static int dc1394_ v2_read_packet(AVFormatContext *c, AVPacket *pkt)197 static int dc1394_read_packet(AVFormatContext *c, AVPacket *pkt) 314 198 { 315 199 struct dc1394_data *dc1394 = c->priv_data; 316 200 int res; … … static int dc1394_v2_read_packet(AVFormatContext *c, AVPacket *pkt) 336 220 return res; 337 221 } 338 222 339 static int dc1394_ v2_close(AVFormatContext * context)223 static int dc1394_close(AVFormatContext * context) 340 224 { 341 225 struct dc1394_data *dc1394 = context->priv_data; 342 226 … … static int dc1394_v2_close(AVFormatContext * context) 350 234 351 235 AVInputFormat ff_libdc1394_demuxer = { 352 236 .name = "libdc1394", 353 .long_name = NULL_IF_CONFIG_SMALL("dc1394 v.2 A/V grab"), 354 .priv_data_size = sizeof(struct dc1394_data), 355 .read_header = dc1394_v2_read_header, 356 .read_packet = dc1394_v2_read_packet, 357 .read_close = dc1394_v2_close, 358 .flags = AVFMT_NOFILE 359 }; 360 361 #endif 362 #if HAVE_LIBDC1394_1 363 AVInputFormat ff_libdc1394_demuxer = { 364 .name = "libdc1394", 365 .long_name = NULL_IF_CONFIG_SMALL("dc1394 v.1 A/V grab"), 237 .long_name = NULL_IF_CONFIG_SMALL("dc1394 A/V grab"), 366 238 .priv_data_size = sizeof(struct dc1394_data), 367 .read_header = dc1394_ v1_read_header,368 .read_packet = dc1394_ v1_read_packet,369 .read_close = dc1394_ v1_close,239 .read_header = dc1394_read_header, 240 .read_packet = dc1394_read_packet, 241 .read_close = dc1394_close, 370 242 .flags = AVFMT_NOFILE 371 243 }; 372 #endif
