summaryrefslogtreecommitdiff
path: root/libavdevice/v4l2.c
Commit message (Collapse)AuthorAge
...
* | Use v4l2 input format automatically if filename starts with "/dev/video"Andrey Utkin2014-10-29
| | | | | | | | Signed-off-by: Carl Eugen Hoyos <cehoyos@ag.or.at>
* | lavd/v4l2: introduce enqueue_buffer()Giorgio Vazzana2014-09-06
| | | | | | | | | | | | | | | | Additionally, make sure a buffer gets enqueued again (even in error paths) after it has been succesfully dequeued. Tested-by: Dmitry Volyntsev <xeioexception@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd/v4l2: simplify list_formats()Giorgio Vazzana2014-09-05
| | | | | | | | | | | | We can avoid passing file descriptor fd explicitely. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd/v4l2: simplify list_framesizes()Giorgio Vazzana2014-09-05
| | | | | | | | | | | | We can avoid passing file descriptor fd explicitely. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd/v4l2: remove unneeded variable in device_init()Giorgio Vazzana2014-09-05
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd/v4l2: simplify first_field()Giorgio Vazzana2014-09-05
| | | | | | | | | | | | | | There is no need to pass fd as a second parameter. Additionally remove unneeded curly braces. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd/v4l2: Replace s1 with ctx for consistency.Giorgio Vazzana2014-09-05
| | | | | | | | | | | | No functional change in the code. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | libavdevice/v4l2: fix descriptors leak on error pathsDmitry Volyntsev2014-09-04
| | | | | | | | | | | | | | Signed-off-by: Dmitry Volytnsev <xeioexception@gmail.com> Reviewed-by: Benoit Fouet <benoit.fouet@free.fr> Reviewed-by: Giorgio Vazzana <mywing81@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avdevice/v4l2: try to fix build for openbsdMichael Niedermayer2014-08-18
| | | | | | | | | | Found-by: carl Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd/v4l2: do not fail when VIDIOC_ENUMSTD returns ENODATAAndre Wolokita2014-08-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As of September 14 2012, v4l_enumstd() will return ENODATA when a device's std field is set to 0. That is, the device does not have a standard format. In order to properly handle this case, v4l2_set_parameters should catch the ENODATA code and break instead of failing. Below is the v4l2-core commit describing this change. >>commit a5338190efc7cfa8c99a6856342a77d21c9a05cf >>Author: Hans Verkuil <hans.verkuil@cisco.com> >>Date: Fri Sep 14 06:45:43 2012 -0300 >> >> [media] v4l2-core: tvnorms may be 0 for a given input, handle that case >> >> Currently the core code looks at tvnorms to see whether ENUMSTD >> or G_PARM should be enabled. This is not a good check for drivers >> that support the STD API on one input and the DV Timings API on another. >> In that case tvnorms may be 0. >> Instead check whether s_std is present (for ENUMSTD) or whether g_std or >> current_norm is present for g_parm. >> Also, in the enumstd core function return ENODATA if tvnorms is 0, >> because in that case the current input does not support the STD API >> and ENUMSTD should return ENODATA for that. >> >> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> >> Reviewed-by: Sakari Ailus <sakari.ailus@iki.fi> >> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
* | Merge commit 'f929ab0569ff31ed5a59b0b0adb7ce09df3fca39'Michael Niedermayer2014-08-15
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'f929ab0569ff31ed5a59b0b0adb7ce09df3fca39': cosmetics: Write NULL pointer equality checks more compactly Conflicts: cmdutils.c ffmpeg_opt.c ffplay.c libavcodec/dvbsub.c libavcodec/dvdsubdec.c libavcodec/dvdsubenc.c libavcodec/dxa.c libavcodec/libxvid_rc.c libavcodec/mpegvideo.c libavcodec/mpegvideo_enc.c libavcodec/rv10.c libavcodec/tiffenc.c libavcodec/utils.c libavcodec/vc1dec.c libavcodec/zmbv.c libavdevice/v4l2.c libavformat/matroskadec.c libavformat/movenc.c libavformat/sdp.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * cosmetics: Write NULL pointer equality checks more compactlyGabriel Dume2014-08-15
| | | | | | | | Signed-off-by: Diego Biurrun <diego@biurrun.de>
| * libavdevice: use avpriv_open()Rémi Denis-Courmont2013-08-07
| | | | | | | | Signed-off-by: Anton Khirnov <anton@khirnov.net>
* | avdevice/v4l2: Use av_malloc_array()Michael Niedermayer2014-05-22
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd: Use av_gettime_relative()Olivier Langlois2014-05-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Whenever av_gettime() is used to measure relative period of time, av_gettime_relative() is prefered as it guarantee monotonic time on supported platforms. Since v4l2 is compiled only on Linux where av_gettime_relative() is monotonic, a small wrapper function av_gettime_monotonic() is used (should be inlined the compiler) to put emphasis on that fact. Signed-off-by: Olivier Langlois <olivier@trillion01.com> Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Fix convertion typosMichael Niedermayer2014-04-29
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd: add categories to device implementationsLukasz Marek2014-03-03
| | | | | | | | Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
* | avdevice/v4l2: only use average frame rate if setMichael Niedermayer2014-02-02
| | | | | | | | | | | | It might be unset on some platforms with some drivers and some input Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avdevice/v4l2: only use frame period from v4l2 if validMichael Niedermayer2014-02-02
| | | | | | | | | | | | | | There is evidence that some drivers do not set a valid value See: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=718805 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | v4l2: setting device parameters earlyFederico Simoncelli2014-01-05
| | | | | | | | | | | | | | | | | | | | | | | | Setting the v4l2 device parameters may influence video properties such as width, height and pixel format. This patch moves v4l2_set_parameters to be executed before fetching the video properties, avoiding errors such as (pal vs ntsc): The v4l2 frame is 829440 bytes, but 691200 bytes are expected Signed-off-by: Federico Simoncelli <fsimonce@redhat.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | timefilter: Handle memory allocation failureDerek Buitenhuis2013-10-27
| | | | | | | | Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* | lavd/v4l2: do not fail when VIDIOC_ENUMSTD returns EINVAL without a valid matchmrlika2013-09-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With some (buggy) drivers, the VIDIOC_G_STD ioctl returns a std_id that cannot be matched with any of the enumerated v4l2_standard structures (for example std_id = 0 or std_id = 0xffffff). Do not fail when we reach the end of the enumeration without a valid match. Fixes ticket #2370 Note: This commit message has been modified by Giorgio Vazzana, the original commit message was: "Fixed regression for mandatory VIDIOC_ENUMSTD support by v4l2" Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd/v4l2: Improve debug messageGiorgio Vazzana2013-09-08
| | | | | | | | | | | | | | In particular, print the standard supported by the selected input. Additionally, use PRIx64 everywhere when printing standards. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Read h264 headers from v4l2 to allow stream-copying.Carl Eugen Hoyos2013-09-01
| | | | | | | | | | Fixes ticket #2882. Analyzed and tested by William C Bonner.
* | Merge commit '7950e519bb094897f957b9a9531cc60ba46cbc91'Michael Niedermayer2013-08-03
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '7950e519bb094897f957b9a9531cc60ba46cbc91': Disable deprecation warnings for cases where a replacement is available Conflicts: libavcodec/avpacket.c libavcodec/pthread.c libavcodec/utils.c libavdevice/v4l2.c libavfilter/avfiltergraph.c libavfilter/buffersrc.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * Disable deprecation warnings for cases where a replacement is availableDiego Biurrun2013-08-02
| |
* | v4l2: make possible to disable libv4l2 at runtime.Clément Bœsch2013-05-22
| | | | | | | | | | | | Also disable it by default since it looks currently buggy. The usefulness of such library is mostly limited to backward compatibility with very old devices.
* | lavd/v4l2: move pixel format conversion code to a separate place.Clément Bœsch2013-05-20
| | | | | | | | This will be shared with the output device.
* | Merge commit 'a5f8873620ce502d37d0cc3ef93ada2ea8fb8de7'Michael Niedermayer2013-05-04
|\| | | | | | | | | | | | | | | | | | | | | | | | | * commit 'a5f8873620ce502d37d0cc3ef93ada2ea8fb8de7': silly typo fixes Conflicts: doc/protocols.texi libavcodec/aacpsy.c libavformat/utils.c tools/patcheck Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * silly typo fixesDiego Biurrun2013-05-03
| |
* | lavd/v4l2: fully init an ioctl argument.Nicolas George2013-04-01
| | | | | | | | Silence a valgrind warning about uninitialized memory.
* | lavd/v4l2: fix printing of list_formats tableGiorgio Vazzana2013-03-28
| | | | | | | | | | | | In particular we needed a '\n' at the end of the line when the format is emulated. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd/v4l2: replace ioctl() with v4l2_ioctl()Giorgio Vazzana2013-03-28
| | | | | | | | | | | | | | This is consistent with the rest of the file and makes listing of emulated formats possible when ffmpeg is compiled with libv4l2. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd/v4l2: honor previously selected input channelGiorgio Vazzana2013-03-23
| | | | | | | | | | | | | | An input channel could have been previously set with another application, like v4l2-ctl, so if no input channel is specified use the previosly selected one. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd/v4l2: silence libv4l2 loggingGiorgio Vazzana2013-03-16
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd/v4l2: fix bug in init_convert_timestamp()Giorgio Vazzana2013-03-12
| | | | | | | | | | | | The current code returned a period=0, resulting in identical pts for all frames after time-filtering. This is because AV_TIME_BASE_Q={1, AV_TIME_BASE} and not {AV_TIME_BASE, 1}. With this patch the correct period in microseconds is computed.
* | avformat/avdevice: add missing time.h includesMichael Niedermayer2013-03-12
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd/v4l2: simplify codeGiorgio Vazzana2013-03-09
| | | | | | | | | | | | | | struct buff_data contains a pointer to struct video_data, so passing the file descriptor again is redundant. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd/v4l2: correctly handle error conditions in mmap_read_frame()Giorgio Vazzana2013-03-09
| | | | | | | | | | | | | | | | | | In particular: 1) save errno before it (possibly) gets overwritten by other calls 2) do not forget to enqueue the buffer again in case of error Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit '1afddbe59e96af75f1c07605afc95615569f388f'Michael Niedermayer2013-03-08
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '1afddbe59e96af75f1c07605afc95615569f388f': avpacket: use AVBuffer to allow refcounting the packets. Conflicts: libavcodec/avpacket.c libavcodec/utils.c libavdevice/v4l2.c libavformat/avidec.c libavformat/flacdec.c libavformat/id3v2.c libavformat/matroskaenc.c libavformat/mux.c libavformat/utils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * avpacket: use AVBuffer to allow refcounting the packets.Anton Khirnov2013-03-08
| | | | | | | | | | | | This will allow us to avoid copying the packets in many cases. This breaks ABI.
* | v4l2: fix regression that caused ffmpeg to occasionally get stuckMichael Niedermayer2013-03-02
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavd/v4l2: copy frames into normally allocated packets whenever there is ↵Giorgio Vazzana2013-03-02
| | | | | | | | | | | | | | | | | | | | | | just one buffer left available This will avoid the possibility that we dequeue more buffers than we have obtained from the v4l2 driver. Fixes ticket #1570 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | v4l2: try to fix build on BSDMichael Niedermayer2013-02-18
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Add yvu410 as a supported v4l2 input format.Carl Eugen Hoyos2013-02-17
| |
* | Add gray16 as a supported v4l2 input format.Carl Eugen Hoyos2013-02-17
| |
* | lavd/v4l2: fix error logic when enumerating standardsStefano Sabatini2013-02-10
| | | | | | | | | | | | | | Set ret to 0 before enumerating standards in v4l2_set_parameters(), avoid use of uninitialized variable. Regression introduced in 60950adc18fe145a235211e75da68ab07123fcaa.
* | lavd/v4l2: implement consistent error handlingStefano Sabatini2013-02-10
| | | | | | | | | | In particular, avoid use of non-thread-safe strerror(), and store errno before calling av_log().
* | lavd/v4l2: read the correct time per frame from devices that support a standardGiorgio Vazzana2013-01-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Generally speaking, there are two types of v4l2 devices [1]: 1) devices that support a standard, like PAL or NTFS (tv cards, for example). For this class of devices the framerate is fixed by the standard (for example PAL uses 25 fps) and the v4l2 driver cannot usually negotiate a different framerate (unless it can skip frames on the driver side, to save I/O bandwidth). 2) devices for which the notion of standard does not make sense (webcams, for example). For these devices it is usually possibile to request a desidered framerate. In either case, the desidered frame rate can be requested when the VIDIOC_G_PARM ioctl returns the V4L2_CAP_TIMEPERFRAME flag in the capability field. Currently the code does not check for V4L2_CAP_TIMEPERFRAME and supports only the second category of devices, returning a time per frame of 0/0 for devices in the first group that do not permit to negotiate the framerate. This patch adds support to read the correct framerate in all cases. [1] http://linuxtv.org/downloads/v4l-dvb-apis/standard.html Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
* | lavd/v4l2: add list_standards optionGiorgio Vazzana2013-01-31
| | | | | | | | | | | | | | Since the user is expected to choose the standard by name (with -standard option), add the possibility to list all the supported standards. Signed-off-by: Stefano Sabatini <stefasab@gmail.com>