summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* v4l2: support min-queued=0 again1.0/topic/dmabufMichael Olbrich2013-09-131-2/+6
| | | | Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
* wait for mmaped buffers, when neededMichael Olbrich2013-09-131-1/+1
| | | | Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
* gstv4l2bufferpool: make number of queued output buffers configurable for USERPTRMichael Olbrich2013-09-133-1/+17
| | | | Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
* v4l2: initial sink USERPTR supportMichael Olbrich2013-09-133-17/+157
| | | | Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
* v4l2: create dmabuf buffers for GST_V4L2_IO_MMAP if possibleMichael Olbrich2013-09-131-34/+26
| | | | Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
* Merge '1.0/topic/upstream'Michael Olbrich2013-09-1311-103/+490
|\ | | | | | | umpf-merge-topic: 1.0/topic/upstream
| * avimux: unmap the correct bufferMichael Olbrich2013-09-131-1/+1
| | | | | | | | | | | | The audio buffer was mapped so unmap it and not the video buffer https://bugzilla.gnome.org/show_bug.cgi?id=706642
| * v4l2: don't extract data from caps twiceMichael Olbrich2013-09-131-38/+0
| | | | | | | | | | | | | | | | gst_video_info_from_caps() always extract width, height, interlace mode and framerate now. It is no longer necessary to do it again for encoded formats. https://bugzilla.gnome.org/show_bug.cgi?id=703399
| * v4l2: make sure the element is not deleted before the poolMichael Olbrich2013-09-131-0/+4
| | | | | | | | | | | | | | | | The pool accesses data from the v4l2object so it must exist at least as long as the pool. Refcount the element which controls the object live-time. https://bugzilla.gnome.org/show_bug.cgi?id=701650
| * v4l2: iterate controls with V4L2_CTRL_FLAG_NEXT_CTRL if possibleMichael Olbrich2013-09-131-4/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In v2.6.18 control classes where added to the v4l2 API. Iterating over CIDs starting with V4L2_CID_BASE will only find controls for the first control class. By iterating with V4L2_CTRL_FLAG_NEXT_CTRL all controls are found. This is necessary to make controls from other control classes available in the extra-controls property. If V4L2_CTRL_FLAG_NEXT_CTRL is not defined at compile time or not supported at runtime then the old mechanism for iterating is used. https://bugzilla.gnome.org/show_bug.cgi?id=701540
| * v4l2: improve pixel aspect ratio handlingMichael Olbrich2013-09-132-5/+96
| | | | | | | | | | | | | | | | | | Instead of just assuming a aspect ratio of 1/1 use VIDIOC_CROPCAP to ask the device. This also add a pixel-aspect-ratio property to overwrite the value from the driver and a force-aspect-ratio property to ignore it. https://bugzilla.gnome.org/show_bug.cgi?id=700285
| * v4l2: Fix compilation with older kernelsStirling Westrup2013-09-131-0/+2
| | | | | | | | https://bugzilla.gnome.org/show_bug.cgi?id=701595
| * v4l2: call VIDIOC_REQBUFS with count = 0 in pool_finalizeMichael Olbrich2013-09-131-12/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Without this the following sequence fails: - set_caps() - object_stop() (does nothing) - set_format() -> VIDIOC_S_FMT - set_config() -> VIDIOC_REQBUFS with count = N - set_caps() - object_stop() - pool_finalize() - set_format() -> VIDIOC_S_FMT => EBUSY Usually the pool is started after set_config(), in which case object_stop() will result in a pool_stop and therefore VIDIOC_REQBUFS with count = 0 but that is not guaranteed. Also calling VIDIOC_REQBUFS with count = 0 in pool_finalize() if necessary fixes this problem. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701543
| * v4l2: rework sink buffer refcountingMichael Olbrich2013-09-131-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a followup patch for #700781, which is not quite correct. The buffer handling is quite complicated here. The original code intended to the the following: - gst_v4l2_buffer_pool_process() calls QBUF and adds the buffer to the local list. - The sink calls gst_buffer_unref() which returns the buffer to the pool but not the 'free list'. - Some time later DQBUF returns the buffer and gst_v4l2_buffer_pool_release_buffer() puts in on the 'free list'. If the buffer must be copied then (parent_class)->acquire_buffer() is called directly to keep the buffer in the pool. This has two problems: 1. If gst_v4l2_buffer_pool_release_buffer() is called before the buffer is returned to the pool, then the buffer is put on the 'free list' twice. This can happen if a reference to the buffer is kept outside the sink, of if DQBUF returns the buffer, that was just queued with QBUF. 2. If buffers are copied, then all buffers are in the pool at all times. As a result gst_v4l2_buffer_pool_stop() and gst_v4l2_buffer_pool_dqbuf() can access pool->buffers at the same time, which can lead to memory corruption. The patch for #700781 fixes those problems, but with the side effect that there are always buffers outside the pool (because they are queued) and the pool is never stopped. This patch fixes this by releasing the reference to the buffer after handling it (to avoid problem 2.) so it can be returned to the pool. gst_v4l2_buffer_pool_release_buffer() is only called if the buffer is already in the pool (to avoid problem 1.). Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701375
| * v4l2: Only conditionally use V4L2_CTRL_TYPE_INTEGER_MENU, it's not available ↵Sebastian Dröge2013-09-131-0/+2
| | | | | | | | in older versions
| * v4l2: add a property for arbitrary v4l2 controlsMichael Olbrich2013-09-134-1/+93
| | | | | | | | | | | | | | | | | | This makes it possible to set any controls that can be set with VIDIOC_S_CTRL. The controls are set when the property is set (if the device is open) and when the device is opened. https://bugzilla.gnome.org/show_bug.cgi?id=698837
| * v4l2: keep a reference to all queued buffersMichael Olbrich2013-09-131-4/+3
| | | | | | | | | | | | | | | | | | Without this, a queued buffer may be required, filled and queued before it is dequeued. Calling gst_buffer_pool_acquire_buffer() ensures that the buffer is set up correctly and gst_buffer_unref() calls buffer_release(). https://bugzilla.gnome.org/show_bug.cgi?id=700781
| * v4l2: Don't stop streaming when set_caps is called with unchanged capsMichael Olbrich2013-09-134-0/+25
| | | | | | | | | | | | | | | | This can happen if other parts of the pipeline are reconfigured. Stop streaming even for a short amount of time can be quite visible, so it should be avoided if possible. https://bugzilla.gnome.org/show_bug.cgi?id=700503
| * v4l2: only add interlace-mode to the caps for raw formatsMichael Olbrich2013-09-131-3/+6
| | | | | | | | https://bugzilla.gnome.org/show_bug.cgi?id=700280
| * v4l2: copy and set the actual size of the contentMichael Olbrich2013-09-131-2/+2
| | | | | | | | https://bugzilla.gnome.org/show_bug.cgi?id=700282
| * v4l2: request 0 buffers when stoppingMichael Olbrich2013-09-131-0/+13
| | | | | | | | | | | | | | Without this stopping the pool in *_set_caps() is useless. S_FMT will still fail with EBUSY. https://bugzilla.gnome.org/show_bug.cgi?id=699835
| * v4l2: fill out v4l2_buffer.bytesused field for v4l2sinkPhilipp Zabel2013-09-131-2/+5
| | | | | | | | | | | | | | | | | | | | When queuing a buffer for a sink, bytesused must contain the actual amount of data. For a source, the driver must overwrite this, so it doesn't matter what is set here. https://bugzilla.gnome.org/show_bug.cgi?id=699598
| * v4l2: always generate video info from capsMichael Olbrich2013-09-131-7/+3
| | | | | | | | | | | | | | | | | | In the past gst_video_info_from_caps() only video/x-raw. Now it also supports other video/* and image/* formats. With this patch the format won't be GST_VIDEO_FORMAT_UNKOWN and gst_v4l2_buffer_pool_set_config() handles strides correctly. https://bugzilla.gnome.org/show_bug.cgi?id=699570
| * v4l2: try to allocate new buffers with VIDIOC_CREATE_BUFS if neededMichael Olbrich2013-09-132-0/+53
| | | | | | | | | | | | | | | | | | If max_buffers is 0 then an arbitrary number of buffers (currently 4) is allocated. If this is not enough v4l2src starts copying buffers. With this patch VIDIOC_CREATE_BUFS is used to allocate a new buffer. If this fails v4l2src falls back to copying buffers. https://bugzilla.gnome.org/show_bug.cgi?id=699447
| * v4l2: fix and cleanup VIDIOC_EXPBUF handlingMichael Olbrich2013-09-131-1/+13
| | | | | | | | | | | | clear the struct, and provide a correct error message https://bugzilla.gnome.org/show_bug.cgi?id=699337
| * v4l2: handle return value -ENOTTY for unimplemented VIDIOC_G_PARMPhilipp Zabel2013-09-131-1/+1
| | | | | | | | | | | | | | Newer kernels return -ENOTTY, older kernels return -EINVAL if the ioctl is not implemented. With this patch, GStreamer handles both cases. https://bugzilla.gnome.org/show_bug.cgi?id=698825
| * v4l2: fix broken boolean expression to detect non-frame buffersMichael Olbrich2013-09-131-1/+1
| | | | | | | | https://bugzilla.gnome.org/show_bug.cgi?id=699294
| * v4l2: also poll for output devicesMichael Olbrich2013-09-132-8/+6
| | | | | | | | | | | | | | Note that the V4L2 API defines that for output devices POLLOUT indicates that a buffer is ready to be dequeued. https://bugzilla.gnome.org/show_bug.cgi?id=698992
| * v4l2: fix copying of encoded buffersPhilipp Zabel2013-09-131-1/+5
| | | | | | | | | | | | | | | | | | The existence of a GstVideoFormatInfo does not guarantee, that the buffer contains video frames, so the format must be checked. Also, for encoded buffers the length is variable and must be set. https://bugzilla.gnome.org/show_bug.cgi?id=698949
| * v4l2: add support for mpeg4 and H.263Michael Olbrich2013-09-131-0/+27
| | | | | | | | https://bugzilla.gnome.org/show_bug.cgi?id=698826
| * v4l2: handle ENODATA return value for VIDIOC_ENUMSTDPhilipp Zabel2013-09-131-1/+1
| | | | | | | | | | | | | | In kernel v3.7-rc1, VIDIOC_ENUMSTD returns ENODATA if the current input does not support the STD API. https://bugzilla.gnome.org/show_bug.cgi?id=698827
| * v4l2: bufferpool: reset buffer size in release_bufferMichael Olbrich2013-09-131-2/+4
| | | | | | | | | | | | | | The buffer might still be in use elsewhere when dequeuing buffers for outputs. https://bugzilla.gnome.org/show_bug.cgi?id=698822
| * v4l2: improve debugWim Taymans2013-09-131-3/+7
| |
| * v4l2: Add support of dmabufBenjamin Gaignard2013-09-136-20/+74
|/ | | | | | | | v4l has add a new IOCTL to export a buffer by using dmabuf. This patch allow to use this new IOTCL if it has been defined in videodev2.h I introduce a new IO mode (GST_V4L2_IO_DMABUF) to enable this way of working. https://bugzilla.gnome.org/show_bug.cgi?id=693826
* Release 1.0.10Tim-Philipp Müller2013-08-2871-96/+162
|
* qtdemux: add variant field to H.263 capsTim-Philipp Müller2013-08-261-1/+2
| | | | avdec_h263 won't get plugged otherwise.
* configure.ac: Don't set BZ2_LIBS if bz2 is not foundSebastian Dröge2013-08-261-1/+3
|
* configure: Fix bz2 configure check for WindowsSebastian Dröge2013-08-221-1/+7
| | | | | | Due to function decorations on Windows AC_CHECK_LIB can't be used to check for bz2. https://bugzilla.gnome.org/show_bug.cgi?id=465924
* directsoundsink: WAVEFORMATEX is unsigned for 8 bit integers, and signed for ↵Sebastian Dröge2013-08-221-1/+1
| | | | | | | others Probably fixes https://bugzilla.gnome.org/show_bug.cgi?id=705477
* goom: Ensure src caps are writableSjoerd Simons2013-08-051-0/+1
| | | | | | | | In some cases the src caps determined by goom weren't writable, causing a bunch of assertion failures and failed caps. Fixed by always explicitely making the caps writable https://bugzilla.gnome.org/show_bug.cgi?id=705475
* flvdemux: don't leak stream_id stringTim-Philipp Müller2013-07-301-0/+3
| | | | | | | https://bugzilla.gnome.org/show_bug.cgi?id=705142 Conflicts: gst/flv/gstflvdemux.c
* Release 1.0.9Tim-Philipp Müller2013-07-301-0/+92064
| | | | This time with ChangeLog file
* Release 1.0.9Tim-Philipp Müller2013-07-3071-91878/+162
|
* avidemux: Don't forget unmapping and unreffing bufferSebastian Dröge2013-07-301-0/+3
|
* avidemux: unmap bufferMatej Knopp2013-07-301-0/+2
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=704951
* matroskademux: fix memory leak in check_subtitle_bufferMatej Knopp2013-07-301-2/+7
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=704921
* qtdemux: handle SEGMENT queryWim Taymans2013-07-291-0/+26
|
* flacenc: Fix handling of image tagsSebastian Dröge2013-07-281-4/+14
| | | | | | The caps should be used to get the mimetype and there is only an info structure for the GstSample if the image-type is not NONE.
* flacenc: Don't crash if there is no image tag informationSebastian Dröge2013-07-281-2/+6
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=705018
* v4l2src: Disable renegotiation in the negotiate methodOlivier Crête2013-07-261-0/+9
| | | | | | | | This way, we don't block the initial negotiation. Thanks to Jeremy Whiting for doing all the testing. https://bugzilla.gnome.org/show_bug.cgi?id=695981