Ticket #1804: vlc-0.9.3-libv4l2.patch
File vlc-0.9.3-libv4l2.patch, 26.4 kB (added by jwrdegoede, 3 weeks ago) |
---|
-
vlc-0.9.3/configure.ac
old new 2421 2421 AC_DEFINE(HAVE_ALSA, 1, Define if ALSA is present.) 2422 2422 fi 2423 2423 2424 VLC_ADD_LDFLAGS([v4l2],[-lv4l2]) 2424 2425 CPPFLAGS="${CPPFLAGS_save} ${CPPFLAGS_v4l2}" 2425 2426 AC_CHECK_HEADERS(linux/videodev2.h, [ 2426 2427 VLC_ADD_PLUGIN([v4l2]) -
vlc-0.9.3/modules/access/v4l2/v4l2.c
old new 67 67 68 68 #include <poll.h> 69 69 70 #include <libv4l2.h> 71 70 72 /***************************************************************************** 71 73 * Module descriptior 72 74 *****************************************************************************/ … … 1108 1110 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 1109 1111 buf.memory = ( p_sys->io == IO_METHOD_USERPTR ) ? 1110 1112 V4L2_MEMORY_USERPTR : V4L2_MEMORY_MMAP; 1111 ioctl( p_sys->i_fd_video, VIDIOC_DQBUF, &buf ); /* ignore result */1113 v4l2_ioctl( p_sys->i_fd_video, VIDIOC_DQBUF, &buf ); /* ignore result */ 1112 1114 } 1113 1115 1114 1116 buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 1115 if( ioctl( p_sys->i_fd_video, VIDIOC_STREAMOFF, &buf_type ) < 0 ) {1117 if( v4l2_ioctl( p_sys->i_fd_video, VIDIOC_STREAMOFF, &buf_type ) < 0 ) { 1116 1118 msg_Err( p_this, "VIDIOC_STREAMOFF failed" ); 1117 1119 } 1118 1120 … … 1131 1133 case IO_METHOD_MMAP: 1132 1134 for( i = 0; i < p_sys->i_nbuffers; ++i ) 1133 1135 { 1134 if( munmap( p_sys->p_buffers[i].start, p_sys->p_buffers[i].length ) )1136 if( v4l2_munmap( p_sys->p_buffers[i].start, p_sys->p_buffers[i].length ) ) 1135 1137 { 1136 1138 msg_Err( p_this, "munmap failed" ); 1137 1139 } … … 1155 1157 { 1156 1158 (void)p_this; 1157 1159 /* Close */ 1158 if( p_sys->i_fd_video >= 0 ) close( p_sys->i_fd_video );1160 if( p_sys->i_fd_video >= 0 ) v4l2_close( p_sys->i_fd_video ); 1159 1161 #ifdef HAVE_ALSA 1160 1162 if( p_sys->p_alsa_pcm ) 1161 1163 { … … 1350 1352 return -1; 1351 1353 } 1352 1354 1353 i_ret = read( p_sys->i_fd_video, p_buffer, i_len );1355 i_ret = v4l2_read( p_sys->i_fd_video, p_buffer, i_len ); 1354 1356 if( i_ret == 0 ) 1355 1357 { 1356 1358 p_access->info.b_eof = true; … … 1419 1421 switch( p_sys->io ) 1420 1422 { 1421 1423 case IO_METHOD_READ: 1422 i_ret = read( p_sys->i_fd_video, p_sys->p_buffers[0].start, p_sys->p_buffers[0].length );1424 i_ret = v4l2_read( p_sys->i_fd_video, p_sys->p_buffers[0].start, p_sys->p_buffers[0].length ); 1423 1425 if( i_ret == -1 ) 1424 1426 { 1425 1427 switch( errno ) … … 1446 1448 buf.memory = V4L2_MEMORY_MMAP; 1447 1449 1448 1450 /* Wait for next frame */ 1449 if ( ioctl( p_sys->i_fd_video, VIDIOC_DQBUF, &buf ) < 0 )1451 if (v4l2_ioctl( p_sys->i_fd_video, VIDIOC_DQBUF, &buf ) < 0 ) 1450 1452 { 1451 1453 switch( errno ) 1452 1454 { … … 1470 1472 if( !p_block ) return 0; 1471 1473 1472 1474 /* Unlock */ 1473 if( ioctl( p_sys->i_fd_video, VIDIOC_QBUF, &buf ) < 0 )1475 if( v4l2_ioctl( p_sys->i_fd_video, VIDIOC_QBUF, &buf ) < 0 ) 1474 1476 { 1475 1477 msg_Err (p_demux, "Failed to unlock (VIDIOC_QBUF)"); 1476 1478 return 0; … … 1484 1486 buf.memory = V4L2_MEMORY_USERPTR; 1485 1487 1486 1488 /* Wait for next frame */ 1487 if ( ioctl( p_sys->i_fd_video, VIDIOC_DQBUF, &buf ) < 0 )1489 if (v4l2_ioctl( p_sys->i_fd_video, VIDIOC_DQBUF, &buf ) < 0 ) 1488 1490 { 1489 1491 switch( errno ) 1490 1492 { … … 1517 1519 if( !p_block ) return 0; 1518 1520 1519 1521 /* Unlock */ 1520 if( ioctl( p_sys->i_fd_video, VIDIOC_QBUF, &buf ) < 0 )1522 if( v4l2_ioctl( p_sys->i_fd_video, VIDIOC_QBUF, &buf ) < 0 ) 1521 1523 { 1522 1524 msg_Err (p_demux, "Failed to unlock (VIDIOC_QBUF)"); 1523 1525 return 0; … … 1705 1707 req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 1706 1708 req.memory = V4L2_MEMORY_MMAP; 1707 1709 1708 if( ioctl( i_fd, VIDIOC_REQBUFS, &req ) < 0 )1710 if( v4l2_ioctl( i_fd, VIDIOC_REQBUFS, &req ) < 0 ) 1709 1711 { 1710 1712 msg_Err( p_demux, "device does not support mmap i/o" ); 1711 1713 goto open_failed; … … 1733 1735 buf.memory = V4L2_MEMORY_MMAP; 1734 1736 buf.index = p_sys->i_nbuffers; 1735 1737 1736 if( ioctl( i_fd, VIDIOC_QUERYBUF, &buf ) < 0 )1738 if( v4l2_ioctl( i_fd, VIDIOC_QUERYBUF, &buf ) < 0 ) 1737 1739 { 1738 1740 msg_Err( p_demux, "VIDIOC_QUERYBUF" ); 1739 1741 goto open_failed; … … 1741 1743 1742 1744 p_sys->p_buffers[p_sys->i_nbuffers].length = buf.length; 1743 1745 p_sys->p_buffers[p_sys->i_nbuffers].start = 1744 mmap( NULL, buf.length, PROT_READ | PROT_WRITE, MAP_SHARED, i_fd, buf.m.offset );1746 v4l2_mmap( NULL, buf.length, PROT_READ | PROT_WRITE, MAP_SHARED, i_fd, buf.m.offset ); 1745 1747 1746 1748 if( p_sys->p_buffers[p_sys->i_nbuffers].start == MAP_FAILED ) 1747 1749 { … … 1774 1776 req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 1775 1777 req.memory = V4L2_MEMORY_USERPTR; 1776 1778 1777 if( ioctl( i_fd, VIDIOC_REQBUFS, &req ) < 0 )1779 if( v4l2_ioctl( i_fd, VIDIOC_REQBUFS, &req ) < 0 ) 1778 1780 { 1779 1781 msg_Err( p_demux, "device does not support user pointer i/o" ); 1780 1782 return VLC_EGENERIC; … … 1830 1832 enum v4l2_buf_type buf_type; 1831 1833 char *psz_device = p_sys->psz_vdev; 1832 1834 es_format_t es_fmt; 1835 int libv4l2_fd; 1833 1836 1834 1837 if( ( i_fd = open( psz_device, O_RDWR ) ) < 0 ) 1835 1838 { … … 1837 1840 goto open_failed; 1838 1841 } 1839 1842 1843 /* Note the v4l2_xxx functions are designed so that if they get passed an 1844 unknown fd, the will behave exactly as their regular xxx counterparts, 1845 so if v4l2_fd_open fails, we continue as normal (missing the libv4l2 1846 custom cam format to normal formats conversion). Chances are big we will 1847 still fail then though, as normally v4l2_fd_open only fails if the 1848 device is not a v4l2 device. */ 1849 libv4l2_fd = v4l2_fd_open(i_fd, V4L2_ENABLE_ENUM_FMT_EMULATION); 1850 if (libv4l2_fd != -1) 1851 i_fd = libv4l2_fd; 1852 1840 1853 /* Tune the tuner */ 1841 1854 if( p_sys->i_frequency >= 0 ) 1842 1855 { … … 1850 1863 frequency.tuner = p_sys->i_cur_tuner; 1851 1864 frequency.type = p_sys->p_tuners[p_sys->i_cur_tuner].type; 1852 1865 frequency.frequency = p_sys->i_frequency / 62.5; 1853 if( ioctl( i_fd, VIDIOC_S_FREQUENCY, &frequency ) < 0 )1866 if( v4l2_ioctl( i_fd, VIDIOC_S_FREQUENCY, &frequency ) < 0 ) 1854 1867 { 1855 1868 msg_Err( p_obj, "cannot set tuner frequency (%m)" ); 1856 1869 goto open_failed; … … 1870 1883 memset( &tuner, 0, sizeof( tuner ) ); 1871 1884 tuner.index = p_sys->i_cur_tuner; 1872 1885 tuner.audmode = p_sys->i_audio_mode; 1873 if( ioctl( i_fd, VIDIOC_S_TUNER, &tuner ) < 0 )1886 if( v4l2_ioctl( i_fd, VIDIOC_S_TUNER, &tuner ) < 0 ) 1874 1887 { 1875 1888 msg_Err( p_obj, "cannot set tuner audio mode (%m)" ); 1876 1889 goto open_failed; … … 1882 1895 1883 1896 if( p_sys->i_selected_standard_id != V4L2_STD_UNKNOWN ) 1884 1897 { 1885 if( ioctl( i_fd, VIDIOC_S_STD, &p_sys->i_selected_standard_id ) < 0 )1898 if( v4l2_ioctl( i_fd, VIDIOC_S_STD, &p_sys->i_selected_standard_id ) < 0 ) 1886 1899 { 1887 1900 msg_Err( p_obj, "cannot set standard (%m)" ); 1888 1901 goto open_failed; … … 1898 1911 p_sys->i_selected_input = 0; 1899 1912 } 1900 1913 1901 if( ioctl( i_fd, VIDIOC_S_INPUT, &p_sys->i_selected_input ) < 0 )1914 if( v4l2_ioctl( i_fd, VIDIOC_S_INPUT, &p_sys->i_selected_input ) < 0 ) 1902 1915 { 1903 1916 msg_Err( p_obj, "cannot set input (%m)" ); 1904 1917 goto open_failed; … … 1915 1928 p_sys->i_selected_audio_input = 0; 1916 1929 } 1917 1930 1918 if( ioctl( i_fd, VIDIOC_S_AUDIO, &p_sys->p_audios[p_sys->i_selected_audio_input] ) < 0 )1931 if( v4l2_ioctl( i_fd, VIDIOC_S_AUDIO, &p_sys->p_audios[p_sys->i_selected_audio_input] ) < 0 ) 1919 1932 { 1920 1933 msg_Err( p_obj, "cannot set audio input (%m)" ); 1921 1934 goto open_failed; … … 1964 1977 /* Reset Cropping */ 1965 1978 memset( &cropcap, 0, sizeof(cropcap) ); 1966 1979 cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 1967 if( ioctl( i_fd, VIDIOC_CROPCAP, &cropcap ) >= 0 )1980 if( v4l2_ioctl( i_fd, VIDIOC_CROPCAP, &cropcap ) >= 0 ) 1968 1981 { 1969 1982 crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 1970 1983 crop.c = cropcap.defrect; /* reset to default */ 1971 if( ioctl( i_fd, VIDIOC_S_CROP, &crop ) < 0 )1984 if( v4l2_ioctl( i_fd, VIDIOC_S_CROP, &crop ) < 0 ) 1972 1985 { 1973 1986 switch( errno ) 1974 1987 { … … 1988 2001 1989 2002 if( p_sys->i_width <= 0 || p_sys->i_height <= 0 ) 1990 2003 { 1991 if( ioctl( i_fd, VIDIOC_G_FMT, &fmt ) < 0 )2004 if( v4l2_ioctl( i_fd, VIDIOC_G_FMT, &fmt ) < 0 ) 1992 2005 { 1993 2006 msg_Err( p_demux, "Cannot get default width and height." ); 1994 2007 goto open_failed; … … 2031 2044 } 2032 2045 } 2033 2046 /* Try and set user chroma */ 2034 if( !IsPixelFormatSupported( p_demux, fmt.fmt.pix.pixelformat ) || ( fmt.fmt.pix.pixelformat && ioctl( i_fd, VIDIOC_S_FMT, &fmt ) < 0 ) )2047 if( !IsPixelFormatSupported( p_demux, fmt.fmt.pix.pixelformat ) || ( fmt.fmt.pix.pixelformat && v4l2_ioctl( i_fd, VIDIOC_S_FMT, &fmt ) < 0 ) ) 2035 2048 { 2036 2049 msg_Warn( p_demux, "Driver is unable to use specified chroma %s. Trying defaults.", p_sys->psz_requested_chroma ); 2037 2050 fmt.fmt.pix.pixelformat = 0; … … 2047 2060 { 2048 2061 fmt.fmt.pix.pixelformat = p_chroma_fallbacks[i]; 2049 2062 if( IsPixelFormatSupported( p_demux, fmt.fmt.pix.pixelformat ) 2050 && ioctl( i_fd, VIDIOC_S_FMT, &fmt ) >= 0 )2063 && v4l2_ioctl( i_fd, VIDIOC_S_FMT, &fmt ) >= 0 ) 2051 2064 break; 2052 2065 } 2053 2066 if( i == ARRAY_SIZE( p_chroma_fallbacks ) ) … … 2092 2105 frmival.pixel_format = fmt.fmt.pix.pixelformat; 2093 2106 frmival.width = p_sys->i_width; 2094 2107 frmival.height = p_sys->i_height; 2095 if( ioctl( i_fd, VIDIOC_ENUM_FRAMEINTERVALS, &frmival ) >= 0 )2108 if( v4l2_ioctl( i_fd, VIDIOC_ENUM_FRAMEINTERVALS, &frmival ) >= 0 ) 2096 2109 { 2097 2110 char psz_fourcc[5]; 2098 2111 memset( &psz_fourcc, 0, sizeof( psz_fourcc ) ); … … 2108 2121 frmival.discrete.numerator, 2109 2122 frmival.discrete.denominator ); 2110 2123 frmival.index++; 2111 } while( ioctl( i_fd, VIDIOC_ENUM_FRAMEINTERVALS, &frmival ) >= 0 );2124 } while( v4l2_ioctl( i_fd, VIDIOC_ENUM_FRAMEINTERVALS, &frmival ) >= 0 ); 2112 2125 break; 2113 2126 case V4L2_FRMIVAL_TYPE_STEPWISE: 2114 2127 msg_Dbg( p_demux, " supported frame intervals: %d/%d to " … … 2175 2188 buf.memory = V4L2_MEMORY_MMAP; 2176 2189 buf.index = i; 2177 2190 2178 if( ioctl( i_fd, VIDIOC_QBUF, &buf ) < 0 )2191 if( v4l2_ioctl( i_fd, VIDIOC_QBUF, &buf ) < 0 ) 2179 2192 { 2180 2193 msg_Err( p_demux, "VIDIOC_QBUF failed" ); 2181 2194 goto open_failed; … … 2183 2196 } 2184 2197 2185 2198 buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 2186 if( ioctl( i_fd, VIDIOC_STREAMON, &buf_type ) < 0 )2199 if( v4l2_ioctl( i_fd, VIDIOC_STREAMON, &buf_type ) < 0 ) 2187 2200 { 2188 2201 msg_Err( p_demux, "VIDIOC_STREAMON failed" ); 2189 2202 goto open_failed; … … 2203 2216 buf.m.userptr = (unsigned long)p_sys->p_buffers[i].start; 2204 2217 buf.length = p_sys->p_buffers[i].length; 2205 2218 2206 if( ioctl( i_fd, VIDIOC_QBUF, &buf ) < 0 )2219 if( v4l2_ioctl( i_fd, VIDIOC_QBUF, &buf ) < 0 ) 2207 2220 { 2208 2221 msg_Err( p_demux, "VIDIOC_QBUF failed" ); 2209 2222 goto open_failed; … … 2211 2224 } 2212 2225 2213 2226 buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 2214 if( ioctl( i_fd, VIDIOC_STREAMON, &buf_type ) < 0 )2227 if( v4l2_ioctl( i_fd, VIDIOC_STREAMON, &buf_type ) < 0 ) 2215 2228 { 2216 2229 msg_Err( p_demux, "VIDIOC_STREAMON failed" ); 2217 2230 goto open_failed; … … 2229 2242 return i_fd; 2230 2243 2231 2244 open_failed: 2232 if( i_fd >= 0 ) close( i_fd );2245 if( i_fd >= 0 ) v4l2_close( i_fd ); 2233 2246 return -1; 2234 2247 2235 2248 } … … 2548 2561 int i_standard; 2549 2562 2550 2563 int i_fd; 2564 int libv4l2_fd; 2551 2565 2552 2566 if( ( i_fd = open( psz_device, O_RDWR ) ) < 0 ) 2553 2567 { … … 2555 2569 goto open_failed; 2556 2570 } 2557 2571 2572 /* Note the v4l2_xxx functions are designed so that if they get passed an 2573 unknown fd, the will behave exactly as their regular xxx counterparts, 2574 so if v4l2_fd_open fails, we continue as normal (missing the libv4l2 2575 custom cam format to normal formats conversion). Chances are big we will 2576 still fail then though, as normally v4l2_fd_open only fails if the 2577 device is not a v4l2 device. */ 2578 libv4l2_fd = v4l2_fd_open(i_fd, V4L2_ENABLE_ENUM_FMT_EMULATION); 2579 if (libv4l2_fd != -1) 2580 i_fd = libv4l2_fd; 2581 2558 2582 /* Get device capabilites */ 2559 2583 2560 if( ioctl( i_fd, VIDIOC_QUERYCAP, &p_sys->dev_cap ) < 0 )2584 if( v4l2_ioctl( i_fd, VIDIOC_QUERYCAP, &p_sys->dev_cap ) < 0 ) 2561 2585 { 2562 2586 msg_Err( p_obj, "cannot get video capabilities (%m)" ); 2563 2587 goto open_failed; … … 2593 2617 { 2594 2618 struct v4l2_input t_input; 2595 2619 t_input.index = 0; 2596 while( ioctl( i_fd, VIDIOC_ENUMINPUT, &t_input ) >= 0 )2620 while( v4l2_ioctl( i_fd, VIDIOC_ENUMINPUT, &t_input ) >= 0 ) 2597 2621 { 2598 2622 p_sys->i_input++; 2599 2623 t_input.index = p_sys->i_input; … … 2606 2630 { 2607 2631 p_sys->p_inputs[i_index].index = i_index; 2608 2632 2609 if( ioctl( i_fd, VIDIOC_ENUMINPUT, &p_sys->p_inputs[i_index] ) )2633 if( v4l2_ioctl( i_fd, VIDIOC_ENUMINPUT, &p_sys->p_inputs[i_index] ) ) 2610 2634 { 2611 2635 msg_Err( p_obj, "cannot get video input characteristics (%m)" ); 2612 2636 goto open_failed; … … 2627 2651 { 2628 2652 struct v4l2_standard t_standards; 2629 2653 t_standards.index = 0; 2630 while( ioctl( i_fd, VIDIOC_ENUMSTD, &t_standards ) >=0 )2654 while( v4l2_ioctl( i_fd, VIDIOC_ENUMSTD, &t_standards ) >=0 ) 2631 2655 { 2632 2656 p_sys->i_standard++; 2633 2657 t_standards.index = p_sys->i_standard; … … 2640 2664 { 2641 2665 p_sys->p_standards[i_standard].index = i_standard; 2642 2666 2643 if( ioctl( i_fd, VIDIOC_ENUMSTD, &p_sys->p_standards[i_standard] ) )2667 if( v4l2_ioctl( i_fd, VIDIOC_ENUMSTD, &p_sys->p_standards[i_standard] ) ) 2644 2668 { 2645 2669 msg_Err( p_obj, "cannot get video input standards (%m)" ); 2646 2670 goto open_failed; … … 2662 2686 if( p_sys->dev_cap.capabilities & V4L2_CAP_AUDIO ) 2663 2687 { 2664 2688 while( p_sys->i_audio < 32 && 2665 ioctl( i_fd, VIDIOC_S_AUDIO, &p_sys->p_audios[p_sys->i_audio] ) >= 0 )2689 v4l2_ioctl( i_fd, VIDIOC_S_AUDIO, &p_sys->p_audios[p_sys->i_audio] ) >= 0 ) 2666 2690 { 2667 if( ioctl( i_fd, VIDIOC_G_AUDIO, &p_sys->p_audios[ p_sys->i_audio] ) < 0 )2691 if( v4l2_ioctl( i_fd, VIDIOC_G_AUDIO, &p_sys->p_audios[ p_sys->i_audio] ) < 0 ) 2668 2692 { 2669 2693 msg_Err( p_obj, "cannot get audio input characteristics (%m)" ); 2670 2694 goto open_failed; … … 2690 2714 { 2691 2715 struct v4l2_tuner tuner; 2692 2716 memset( &tuner, 0, sizeof(tuner) ); 2693 while( ioctl( i_fd, VIDIOC_G_TUNER, &tuner ) >= 0 )2717 while( v4l2_ioctl( i_fd, VIDIOC_G_TUNER, &tuner ) >= 0 ) 2694 2718 { 2695 2719 p_sys->i_tuner++; 2696 2720 memset( &tuner, 0, sizeof(tuner) ); … … 2704 2728 { 2705 2729 p_sys->p_tuners[i_index].index = i_index; 2706 2730 2707 if( ioctl( i_fd, VIDIOC_G_TUNER, &p_sys->p_tuners[i_index] ) )2731 if( v4l2_ioctl( i_fd, VIDIOC_G_TUNER, &p_sys->p_tuners[i_index] ) ) 2708 2732 { 2709 2733 msg_Err( p_obj, "cannot get tuner characteristics (%m)" ); 2710 2734 goto open_failed; … … 2727 2751 2728 2752 struct v4l2_frequency frequency; 2729 2753 memset( &frequency, 0, sizeof( frequency ) ); 2730 if( ioctl( i_fd, VIDIOC_G_FREQUENCY, &frequency ) < 0 )2754 if( v4l2_ioctl( i_fd, VIDIOC_G_FREQUENCY, &frequency ) < 0 ) 2731 2755 { 2732 2756 msg_Err( p_obj, "cannot get tuner frequency (%m)" ); 2733 2757 goto open_failed; … … 2752 2776 codec.index = i_index; 2753 2777 codec.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 2754 2778 2755 while( ioctl( i_fd, VIDIOC_ENUM_FMT, &codec ) >= 0 )2779 while( v4l2_ioctl( i_fd, VIDIOC_ENUM_FMT, &codec ) >= 0 ) 2756 2780 { 2757 2781 i_index++; 2758 2782 codec.index = i_index; … … 2767 2791 p_sys->p_codecs[i_index].index = i_index; 2768 2792 p_sys->p_codecs[i_index].type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 2769 2793 2770 if( ioctl( i_fd, VIDIOC_ENUM_FMT, &p_sys->p_codecs[i_index] ) < 0 )2794 if( v4l2_ioctl( i_fd, VIDIOC_ENUM_FMT, &p_sys->p_codecs[i_index] ) < 0 ) 2771 2795 { 2772 2796 msg_Err( p_obj, "cannot get codec description (%m)" ); 2773 2797 goto open_failed; … … 2800 2824 struct v4l2_frmsizeenum frmsize; 2801 2825 frmsize.index = 0; 2802 2826 frmsize.pixel_format = p_sys->p_codecs[i_index].pixelformat; 2803 if( ioctl( i_fd, VIDIOC_ENUM_FRAMESIZES, &frmsize ) < 0 )2827 if( v4l2_ioctl( i_fd, VIDIOC_ENUM_FRAMESIZES, &frmsize ) < 0 ) 2804 2828 { 2805 2829 /* Not all devices support this ioctl */ 2806 2830 msg_Warn( p_obj, "Unable to query for frame sizes" ); … … 2816 2840 " device supports size %dx%d", 2817 2841 frmsize.discrete.width, frmsize.discrete.height ); 2818 2842 frmsize.index++; 2819 } while( ioctl( i_fd, VIDIOC_ENUM_FRAMESIZES, &frmsize ) >= 0 );2843 } while( v4l2_ioctl( i_fd, VIDIOC_ENUM_FRAMESIZES, &frmsize ) >= 0 ); 2820 2844 break; 2821 2845 case V4L2_FRMSIZE_TYPE_STEPWISE: 2822 2846 msg_Dbg( p_obj, … … 2848 2872 } 2849 2873 2850 2874 2851 if( i_fd >= 0 ) close( i_fd );2875 if( i_fd >= 0 ) v4l2_close( i_fd ); 2852 2876 return true; 2853 2877 2854 2878 open_failed: 2855 2879 2856 if( i_fd >= 0 ) close( i_fd );2880 if( i_fd >= 0 ) v4l2_close( i_fd ); 2857 2881 return false; 2858 2882 2859 2883 } … … 3019 3043 { 3020 3044 querymenu.index = i_mid; 3021 3045 querymenu.id = queryctrl.id; 3022 if( ioctl( i_fd, VIDIOC_QUERYMENU, &querymenu ) >= 0 )3046 if( v4l2_ioctl( i_fd, VIDIOC_QUERYMENU, &querymenu ) >= 0 ) 3023 3047 { 3024 3048 msg_Dbg( p_obj, " %d: %s", 3025 3049 querymenu.index, querymenu.name ); … … 3056 3080 queryctrl.default_value ); 3057 3081 memset( &control, 0, sizeof( control ) ); 3058 3082 control.id = queryctrl.id; 3059 if( ioctl( i_fd, VIDIOC_G_CTRL, &control ) >= 0 )3083 if( v4l2_ioctl( i_fd, VIDIOC_G_CTRL, &control ) >= 0 ) 3060 3084 { 3061 3085 msg_Dbg( p_obj, " current value: %d", control.value ); 3062 3086 } … … 3153 3177 var_AddCallback( p_obj, "controls-reset", AccessControlResetCallback, NULL ); 3154 3178 3155 3179 queryctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL; 3156 if( ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 )3180 if( v4l2_ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 ) 3157 3181 { 3158 3182 msg_Dbg( p_obj, "Extended control API supported by v4l2 driver" ); 3159 3183 3160 3184 /* List extended controls */ 3161 3185 queryctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL; 3162 while( ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 )3186 while( v4l2_ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 ) 3163 3187 { 3164 3188 if( queryctrl.type == V4L2_CTRL_TYPE_CTRL_CLASS ) 3165 3189 { … … 3197 3221 i_cid ++ ) 3198 3222 { 3199 3223 queryctrl.id = i_cid; 3200 if( ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 )3224 if( v4l2_ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 ) 3201 3225 { 3202 3226 if( queryctrl.flags & V4L2_CTRL_FLAG_DISABLED ) 3203 3227 continue; … … 3213 3237 i_cid ++ ) 3214 3238 { 3215 3239 queryctrl.id = i_cid; 3216 if( ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 )3240 if( v4l2_ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 ) 3217 3241 { 3218 3242 if( queryctrl.flags & V4L2_CTRL_FLAG_DISABLED ) 3219 3243 continue; … … 3312 3336 memset( &queryctrl, 0, sizeof( queryctrl ) ); 3313 3337 3314 3338 queryctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL; 3315 if( ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 )3339 if( v4l2_ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 ) 3316 3340 { 3317 3341 /* Extended control API supported */ 3318 3342 queryctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL; 3319 while( ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 )3343 while( v4l2_ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 ) 3320 3344 { 3321 3345 if( queryctrl.type == V4L2_CTRL_TYPE_CTRL_CLASS 3322 3346 || V4L2_CTRL_ID2CLASS( queryctrl.id ) == V4L2_CTRL_CLASS_MPEG ) … … 3327 3351 struct v4l2_control control; 3328 3352 memset( &control, 0, sizeof( control ) ); 3329 3353 control.id = queryctrl.id; 3330 if( ioctl( i_fd, VIDIOC_G_CTRL, &control ) >= 03354 if( v4l2_ioctl( i_fd, VIDIOC_G_CTRL, &control ) >= 0 3331 3355 && queryctrl.default_value != control.value ) 3332 3356 { 3333 3357 int i; … … 3350 3374 i_cid ++ ) 3351 3375 { 3352 3376 queryctrl.id = i_cid; 3353 if( ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 )3377 if( v4l2_ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 ) 3354 3378 { 3355 3379 struct v4l2_control control; 3356 3380 if( queryctrl.flags & V4L2_CTRL_FLAG_DISABLED ) 3357 3381 continue; 3358 3382 memset( &control, 0, sizeof( control ) ); 3359 3383 control.id = queryctrl.id; 3360 if( ioctl( i_fd, VIDIOC_G_CTRL, &control ) >= 03384 if( v4l2_ioctl( i_fd, VIDIOC_G_CTRL, &control ) >= 0 3361 3385 && queryctrl.default_value != control.value ) 3362 3386 { 3363 3387 int i; … … 3377 3401 i_cid ++ ) 3378 3402 { 3379 3403 queryctrl.id = i_cid; 3380 if( ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 )3404 if( v4l2_ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) >= 0 ) 3381 3405 { 3382 3406 struct v4l2_control control; 3383 3407 if( queryctrl.flags & V4L2_CTRL_FLAG_DISABLED ) 3384 3408 continue; 3385 3409 memset( &control, 0, sizeof( control ) ); 3386 3410 control.id = queryctrl.id; 3387 if( ioctl( i_fd, VIDIOC_G_CTRL, &control ) >= 03411 if( v4l2_ioctl( i_fd, VIDIOC_G_CTRL, &control ) >= 0 3388 3412 && queryctrl.default_value != control.value ) 3389 3413 { 3390 3414 name2var( queryctrl.name ); … … 3417 3441 3418 3442 queryctrl.id = i_cid; 3419 3443 3420 if( ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) < 03444 if( v4l2_ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) < 0 3421 3445 || queryctrl.flags & V4L2_CTRL_FLAG_DISABLED ) 3422 3446 { 3423 3447 msg_Dbg( p_obj, "%s (%x) control is not supported.", psz_name, i_cid ); … … 3438 3462 if( i_value >= 0 ) 3439 3463 { 3440 3464 ext_control.value = i_value; 3441 if( ioctl( i_fd, VIDIOC_S_EXT_CTRLS, &ext_controls ) < 0 )3465 if( v4l2_ioctl( i_fd, VIDIOC_S_EXT_CTRLS, &ext_controls ) < 0 ) 3442 3466 { 3443 3467 control.value = i_value; 3444 if( ioctl( i_fd, VIDIOC_S_CTRL, &control ) < 0 )3468 if( v4l2_ioctl( i_fd, VIDIOC_S_CTRL, &control ) < 0 ) 3445 3469 { 3446 3470 msg_Err( p_obj, "unable to set %s (%x) to %d (%m)", 3447 3471 psz_name, i_cid, i_value ); 3448 3472 return VLC_EGENERIC; 3449 3473 } 3450 i_ret = ioctl( i_fd, VIDIOC_G_CTRL, &control );3474 i_ret = v4l2_ioctl( i_fd, VIDIOC_G_CTRL, &control ); 3451 3475 } 3452 3476 else 3453 3477 { 3454 i_ret = ioctl( i_fd, VIDIOC_G_EXT_CTRLS, &ext_controls );3478 i_ret = v4l2_ioctl( i_fd, VIDIOC_G_EXT_CTRLS, &ext_controls ); 3455 3479 control.value = ext_control.value; 3456 3480 } 3457 3481 }