Re: coda: Unable to use encoder video_bitrate
Le 2014-12-22 11:02, Philipp Zabel a écrit : That is a good point, rate control can only work if the encoder has an idea about the framerate. I've sent a patch that allows to use VIDIOC_S_PARM to set it: "[media] coda: Use S_PARM to set nominal framerate for h.264 encoder" Thanks, I'll sort out what is needed on Gst side. Kamil, do MFC need to be looked at too ? Nicolas -- 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: coda: Unable to use encoder video_bitrate
Hi Frédéric, On Mon, Dec 22, 2014 at 04:24:20PM +0100, Frédéric Sureau wrote: > Thanks for the patch! > It works fine now after forcing framerate to 30fps (which seems to > be hardcoded in the driver) That is a good point, rate control can only work if the encoder has an idea about the framerate. I've sent a patch that allows to use VIDIOC_S_PARM to set it: "[media] coda: Use S_PARM to set nominal framerate for h.264 encoder" regards Philipp -- 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: coda: Unable to use encoder video_bitrate
Le 2014-12-22 10:24, Frédéric Sureau a écrit : Thanks for the patch! It works fine now after forcing framerate to 30fps (which seems to be hardcoded in the driver) Can you comment about this on gnome bug. Would make sense for the encoder element in GStreamer to relay the framerate to the driver, so the driver can make any sense out of the bitrate. https://bugzilla.gnome.org/show_bug.cgi?id=728438 Nicolas -- 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: coda: Unable to use encoder video_bitrate
Hi Philipp, Le 18/12/2014 17:52, Philipp Zabel a écrit : Hi Frédéric, Am Donnerstag, den 18.12.2014, 17:44 +0100 schrieb Frédéric Sureau: Hi I am trying to use the coda encoder through Gstreamer on an iMX6-based board. I use the (rebased and slightly modified) gstv4l2h264enc plugin from: https://github.com/hizukiayaka/gst-plugins-good This pipeline works fine: gst-launch-1.0 -vvv v4l2src device=/dev/video4 ! "video/x-raw,width=1280,height=720" ! videoconvert ! v4l2video0h264enc ! h264parse ! mp4mux ! filesink location=test.mp4 When encoder has no bitrate param set (default=0), video encoding works well, but bitrate reaches ~2.5Mbps When I try to set the bitrate with whatever value like 100,000 or 1,000,000, the encoder produces video with bitrate around 480kbps and a very poor quality. Here is the gstreamer pipeline I use with bitrate set: gst-launch-1.0 -vvv v4l2src device=/dev/video4 ! "video/x-raw,width=1280,height=720" ! videoconvert ! v4l2video0h264enc extra-controls="controls,video_bitrate=100;" ! h264parse ! mp4mux ! filesink location=test.mp4 The video_bitrate control seems to be correctly passed to the driver by GStreamer since I can see the VIDIOC_S_CTRL call. Any idea ? There is a bug in the register definitions that causes the driver to apply a wrong mask before writing the bitrate to the register. I've got a fix for this in the pipeline, sending it right now. regards Philipp Thanks for the patch! It works fine now after forcing framerate to 30fps (which seems to be hardcoded in the driver) Fred -- 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: coda: Unable to use encoder video_bitrate
2014-12-19 11:28 GMT+01:00 Philipp Zabel : > Hi Jean-Michel, > > Am Donnerstag, den 18.12.2014, 18:10 +0100 schrieb Jean-Michel Hautbois: >> > Sorry, forgot to put all of you on Cc: for the "[media] coda: fix >> > encoder rate control parameter masks" patch. The coda driver is in >> > drivers/media/platform/coda, register definitions in coda_regs.h. >> > The CODA_RATECONTROL_BITRATE_MASK is 0x7f, but it should be 0x7fff. >> > >> >> Well, I meant, the datasheet of the CODA960 because we don't know, >> just by reading the coda_regs.h which register is where and does what. > > I wish. If you search for "cnm-codadx6-datasheet-v2.9.pdf" with a search > engine of your choice, on chipsnmedia.com you can get documentation for > the very oldest coda version supported by the driver. That's all I have > in addition to the old GPLed Freescale imx-vpu-lib for reference. Uh, ok, didn't think about this. Thx a lot ! JM -- 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: coda: Unable to use encoder video_bitrate
Hi Jean-Michel, Am Donnerstag, den 18.12.2014, 18:10 +0100 schrieb Jean-Michel Hautbois: > > Sorry, forgot to put all of you on Cc: for the "[media] coda: fix > > encoder rate control parameter masks" patch. The coda driver is in > > drivers/media/platform/coda, register definitions in coda_regs.h. > > The CODA_RATECONTROL_BITRATE_MASK is 0x7f, but it should be 0x7fff. > > > > Well, I meant, the datasheet of the CODA960 because we don't know, > just by reading the coda_regs.h which register is where and does what. I wish. If you search for "cnm-codadx6-datasheet-v2.9.pdf" with a search engine of your choice, on chipsnmedia.com you can get documentation for the very oldest coda version supported by the driver. That's all I have in addition to the old GPLed Freescale imx-vpu-lib for reference. regards Philipp -- 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: coda: Unable to use encoder video_bitrate
2014-12-18 18:09 GMT+01:00 Philipp Zabel : > Hi Jean-Michel, > > Am Donnerstag, den 18.12.2014, 17:55 +0100 schrieb Jean-Michel Hautbois: >> Hi Philipp, >> >> 2014-12-18 17:52 GMT+01:00 Philipp Zabel : >> > Hi Frédéric, >> > >> > Am Donnerstag, den 18.12.2014, 17:44 +0100 schrieb Frédéric Sureau: >> >> Hi >> >> >> >> I am trying to use the coda encoder through Gstreamer on an iMX6-based >> >> board. >> >> >> >> I use the (rebased and slightly modified) gstv4l2h264enc plugin from: >> >> https://github.com/hizukiayaka/gst-plugins-good >> >> >> >> This pipeline works fine: >> >> gst-launch-1.0 -vvv v4l2src device=/dev/video4 ! >> >> "video/x-raw,width=1280,height=720" ! videoconvert ! v4l2video0h264enc ! >> >> h264parse ! mp4mux ! filesink location=test.mp4 >> >> >> >> When encoder has no bitrate param set (default=0), video encoding works >> >> well, but bitrate reaches ~2.5Mbps >> >> >> >> When I try to set the bitrate with whatever value like 100,000 or >> >> 1,000,000, the encoder produces video with bitrate around 480kbps and a >> >> very poor quality. >> >> >> >> Here is the gstreamer pipeline I use with bitrate set: >> >> gst-launch-1.0 -vvv v4l2src device=/dev/video4 ! >> >> "video/x-raw,width=1280,height=720" ! videoconvert ! v4l2video0h264enc >> >> extra-controls="controls,video_bitrate=100;" ! h264parse ! mp4mux ! >> >> filesink location=test.mp4 >> >> >> >> The video_bitrate control seems to be correctly passed to the driver by >> >> GStreamer since I can see the VIDIOC_S_CTRL call. >> >> >> >> Any idea ? >> > >> > There is a bug in the register definitions that causes the driver to >> > apply a wrong mask before writing the bitrate to the register. >> > I've got a fix for this in the pipeline, sending it right now. >> >> Where can we find the register definitions ? In order to look at it >> before asking you :) ? > > Sorry, forgot to put all of you on Cc: for the "[media] coda: fix > encoder rate control parameter masks" patch. The coda driver is in > drivers/media/platform/coda, register definitions in coda_regs.h. > The CODA_RATECONTROL_BITRATE_MASK is 0x7f, but it should be 0x7fff. > Well, I meant, the datasheet of the CODA960 because we don't know, just by reading the coda_regs.h which register is where and does what. But it may be confidential ? JM -- 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: coda: Unable to use encoder video_bitrate
Hi Jean-Michel, Am Donnerstag, den 18.12.2014, 17:55 +0100 schrieb Jean-Michel Hautbois: > Hi Philipp, > > 2014-12-18 17:52 GMT+01:00 Philipp Zabel : > > Hi Frédéric, > > > > Am Donnerstag, den 18.12.2014, 17:44 +0100 schrieb Frédéric Sureau: > >> Hi > >> > >> I am trying to use the coda encoder through Gstreamer on an iMX6-based > >> board. > >> > >> I use the (rebased and slightly modified) gstv4l2h264enc plugin from: > >> https://github.com/hizukiayaka/gst-plugins-good > >> > >> This pipeline works fine: > >> gst-launch-1.0 -vvv v4l2src device=/dev/video4 ! > >> "video/x-raw,width=1280,height=720" ! videoconvert ! v4l2video0h264enc ! > >> h264parse ! mp4mux ! filesink location=test.mp4 > >> > >> When encoder has no bitrate param set (default=0), video encoding works > >> well, but bitrate reaches ~2.5Mbps > >> > >> When I try to set the bitrate with whatever value like 100,000 or > >> 1,000,000, the encoder produces video with bitrate around 480kbps and a > >> very poor quality. > >> > >> Here is the gstreamer pipeline I use with bitrate set: > >> gst-launch-1.0 -vvv v4l2src device=/dev/video4 ! > >> "video/x-raw,width=1280,height=720" ! videoconvert ! v4l2video0h264enc > >> extra-controls="controls,video_bitrate=100;" ! h264parse ! mp4mux ! > >> filesink location=test.mp4 > >> > >> The video_bitrate control seems to be correctly passed to the driver by > >> GStreamer since I can see the VIDIOC_S_CTRL call. > >> > >> Any idea ? > > > > There is a bug in the register definitions that causes the driver to > > apply a wrong mask before writing the bitrate to the register. > > I've got a fix for this in the pipeline, sending it right now. > > Where can we find the register definitions ? In order to look at it > before asking you :) ? Sorry, forgot to put all of you on Cc: for the "[media] coda: fix encoder rate control parameter masks" patch. The coda driver is in drivers/media/platform/coda, register definitions in coda_regs.h. The CODA_RATECONTROL_BITRATE_MASK is 0x7f, but it should be 0x7fff. regards Philipp -- 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: coda: Unable to use encoder video_bitrate
Hi Philipp, 2014-12-18 17:52 GMT+01:00 Philipp Zabel : > Hi Frédéric, > > Am Donnerstag, den 18.12.2014, 17:44 +0100 schrieb Frédéric Sureau: >> Hi >> >> I am trying to use the coda encoder through Gstreamer on an iMX6-based >> board. >> >> I use the (rebased and slightly modified) gstv4l2h264enc plugin from: >> https://github.com/hizukiayaka/gst-plugins-good >> >> This pipeline works fine: >> gst-launch-1.0 -vvv v4l2src device=/dev/video4 ! >> "video/x-raw,width=1280,height=720" ! videoconvert ! v4l2video0h264enc ! >> h264parse ! mp4mux ! filesink location=test.mp4 >> >> When encoder has no bitrate param set (default=0), video encoding works >> well, but bitrate reaches ~2.5Mbps >> >> When I try to set the bitrate with whatever value like 100,000 or >> 1,000,000, the encoder produces video with bitrate around 480kbps and a >> very poor quality. >> >> Here is the gstreamer pipeline I use with bitrate set: >> gst-launch-1.0 -vvv v4l2src device=/dev/video4 ! >> "video/x-raw,width=1280,height=720" ! videoconvert ! v4l2video0h264enc >> extra-controls="controls,video_bitrate=100;" ! h264parse ! mp4mux ! >> filesink location=test.mp4 >> >> The video_bitrate control seems to be correctly passed to the driver by >> GStreamer since I can see the VIDIOC_S_CTRL call. >> >> Any idea ? > > There is a bug in the register definitions that causes the driver to > apply a wrong mask before writing the bitrate to the register. > I've got a fix for this in the pipeline, sending it right now. Where can we find the register definitions ? In order to look at it before asking you :) ? Thanks, JM -- 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: coda: Unable to use encoder video_bitrate
Hi Frédéric, Am Donnerstag, den 18.12.2014, 17:44 +0100 schrieb Frédéric Sureau: > Hi > > I am trying to use the coda encoder through Gstreamer on an iMX6-based > board. > > I use the (rebased and slightly modified) gstv4l2h264enc plugin from: > https://github.com/hizukiayaka/gst-plugins-good > > This pipeline works fine: > gst-launch-1.0 -vvv v4l2src device=/dev/video4 ! > "video/x-raw,width=1280,height=720" ! videoconvert ! v4l2video0h264enc ! > h264parse ! mp4mux ! filesink location=test.mp4 > > When encoder has no bitrate param set (default=0), video encoding works > well, but bitrate reaches ~2.5Mbps > > When I try to set the bitrate with whatever value like 100,000 or > 1,000,000, the encoder produces video with bitrate around 480kbps and a > very poor quality. > > Here is the gstreamer pipeline I use with bitrate set: > gst-launch-1.0 -vvv v4l2src device=/dev/video4 ! > "video/x-raw,width=1280,height=720" ! videoconvert ! v4l2video0h264enc > extra-controls="controls,video_bitrate=100;" ! h264parse ! mp4mux ! > filesink location=test.mp4 > > The video_bitrate control seems to be correctly passed to the driver by > GStreamer since I can see the VIDIOC_S_CTRL call. > > Any idea ? There is a bug in the register definitions that causes the driver to apply a wrong mask before writing the bitrate to the register. I've got a fix for this in the pipeline, sending it right now. regards Philipp -- 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