RE: vb2: about vb2_queue-queued_count
Hello, On Friday, June 10, 2011 6:29 PM Uwe Kleine-König wrote: On Fri, Jun 10, 2011 at 01:50:37PM +0200, Marek Szyprowski wrote: Hello, On Wednesday, June 08, 2011 10:48 PM Uwe Kleine-König wrote: I'm still debugging my new video overlay device driver. The current problem is again when playing back a second video. After streamoff is called at the end of the first video, I disable the overlay and call vb2_buffer_done on the last buffer. This is exited early because vb-state == VB2_BUF_STATE_DEQUEUED. This results in vb-vb2_queue-queued_count being 1. Now if the new video starts I call vb2_queue_init in the .vidioc_reqbufs callback on my queue (that still has queued_count == 1). After vb2_queue_init returns queued_count is still 1 though q-queued_list is reset to be empty. __vb2_queue_cancel has a similar problem, q-queued_list is reset, but queued_count is not. Thanks again for finding the bug. You are right, __vb2_queue_cancel should reset queued_count too. I will post a patch soon. IMHO vb2_queue_init should reset queued_count, too. Not sure if you just skipped to mention it here vb2_queue_init assumes that the called allocated vb2_queue with kzalloc() or did memset(q, 0, sizeof(struct vb2_queue)), so it is not really required to explicitly set queued_count to zero. Best regards -- Marek Szyprowski Samsung Poland RD Center -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: vb2: about vb2_queue-queued_count
Hello, On Mon, Jun 13, 2011 at 08:26:13AM +0200, Marek Szyprowski wrote: On Friday, June 10, 2011 6:29 PM Uwe Kleine-König wrote: On Fri, Jun 10, 2011 at 01:50:37PM +0200, Marek Szyprowski wrote: Hello, On Wednesday, June 08, 2011 10:48 PM Uwe Kleine-König wrote: I'm still debugging my new video overlay device driver. The current problem is again when playing back a second video. After streamoff is called at the end of the first video, I disable the overlay and call vb2_buffer_done on the last buffer. This is exited early because vb-state == VB2_BUF_STATE_DEQUEUED. This results in vb-vb2_queue-queued_count being 1. Now if the new video starts I call vb2_queue_init in the .vidioc_reqbufs callback on my queue (that still has queued_count == 1). After vb2_queue_init returns queued_count is still 1 though q-queued_list is reset to be empty. __vb2_queue_cancel has a similar problem, q-queued_list is reset, but queued_count is not. Thanks again for finding the bug. You are right, __vb2_queue_cancel should reset queued_count too. I will post a patch soon. IMHO vb2_queue_init should reset queued_count, too. Not sure if you just skipped to mention it here vb2_queue_init assumes that the called allocated vb2_queue with kzalloc() or did memset(q, 0, sizeof(struct vb2_queue)), so it is not really required to explicitly set queued_count to zero. Hmmm, I call vb2_queue_init in the callback .vidioc_reqbufs, because AFAICT this is the only place where I get the needed info to set q-type. As this looks wrong now, can you hint where to initialize the queue instead? Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König| Industrial Linux Solutions | http://www.pengutronix.de/ | -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: vb2: about vb2_queue-queued_count
Hello, On Monday, June 13, 2011 10:37 AM Uwe Kleine-König wrote: On Mon, Jun 13, 2011 at 08:26:13AM +0200, Marek Szyprowski wrote: On Friday, June 10, 2011 6:29 PM Uwe Kleine-König wrote: On Fri, Jun 10, 2011 at 01:50:37PM +0200, Marek Szyprowski wrote: Hello, On Wednesday, June 08, 2011 10:48 PM Uwe Kleine-König wrote: I'm still debugging my new video overlay device driver. The current problem is again when playing back a second video. After streamoff is called at the end of the first video, I disable the overlay and call vb2_buffer_done on the last buffer. This is exited early because vb-state == VB2_BUF_STATE_DEQUEUED. This results in vb-vb2_queue-queued_count being 1. Now if the new video starts I call vb2_queue_init in the .vidioc_reqbufs callback on my queue (that still has queued_count == 1). After vb2_queue_init returns queued_count is still 1 though q- queued_list is reset to be empty. __vb2_queue_cancel has a similar problem, q-queued_list is reset, but queued_count is not. Thanks again for finding the bug. You are right, __vb2_queue_cancel should reset queued_count too. I will post a patch soon. IMHO vb2_queue_init should reset queued_count, too. Not sure if you just skipped to mention it here vb2_queue_init assumes that the called allocated vb2_queue with kzalloc() or did memset(q, 0, sizeof(struct vb2_queue)), so it is not really required to explicitly set queued_count to zero. Hmmm, I call vb2_queue_init in the callback .vidioc_reqbufs, because AFAICT this is the only place where I get the needed info to set q-type. As this looks wrong now, can you hint where to initialize the queue instead? Huh, this design doesn't look good. vb2_queue_init should be called during driver initialization, and .videoc_reqbufs should be just a proxy to vb2_reqbus() (same with querybuf, qbuf, dqbuf, streamon, streamoff, read and poll). Why do you want to play with q-type? Can't you just set it correctly to V4L2_BUF_TYPE_VIDEO_CAPTURE in driver probe? Best regards -- Marek Szyprowski Samsung Poland RD Center -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: vb2: about vb2_queue-queued_count
Hello, On Wednesday, June 08, 2011 10:48 PM Uwe Kleine-König wrote: I'm still debugging my new video overlay device driver. The current problem is again when playing back a second video. After streamoff is called at the end of the first video, I disable the overlay and call vb2_buffer_done on the last buffer. This is exited early because vb-state == VB2_BUF_STATE_DEQUEUED. This results in vb-vb2_queue-queued_count being 1. Now if the new video starts I call vb2_queue_init in the .vidioc_reqbufs callback on my queue (that still has queued_count == 1). After vb2_queue_init returns queued_count is still 1 though q-queued_list is reset to be empty. __vb2_queue_cancel has a similar problem, q-queued_list is reset, but queued_count is not. Thanks again for finding the bug. You are right, __vb2_queue_cancel should reset queued_count too. I will post a patch soon. OTOH queued_count seems to be read only by vb2_wait_for_all_buffers which currently has no users. :-) Right, no mainline drive use it right now, but this function might be convenient for some standard drivers. Best regards -- Marek Szyprowski Samsung Poland RD Center -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: vb2: about vb2_queue-queued_count
On Fri, Jun 10, 2011 at 01:50:37PM +0200, Marek Szyprowski wrote: Hello, On Wednesday, June 08, 2011 10:48 PM Uwe Kleine-König wrote: I'm still debugging my new video overlay device driver. The current problem is again when playing back a second video. After streamoff is called at the end of the first video, I disable the overlay and call vb2_buffer_done on the last buffer. This is exited early because vb-state == VB2_BUF_STATE_DEQUEUED. This results in vb-vb2_queue-queued_count being 1. Now if the new video starts I call vb2_queue_init in the .vidioc_reqbufs callback on my queue (that still has queued_count == 1). After vb2_queue_init returns queued_count is still 1 though q-queued_list is reset to be empty. __vb2_queue_cancel has a similar problem, q-queued_list is reset, but queued_count is not. Thanks again for finding the bug. You are right, __vb2_queue_cancel should reset queued_count too. I will post a patch soon. IMHO vb2_queue_init should reset queued_count, too. Not sure if you just skipped to mention it here Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König| Industrial Linux Solutions | http://www.pengutronix.de/ | -- To unsubscribe from this list: send the line unsubscribe linux-media in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html