Re: coda: Unable to use encoder video_bitrate

2014-12-22 Thread Nicolas Dufresne


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

2014-12-22 Thread Philipp Zabel
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

2014-12-22 Thread Nicolas Dufresne


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

2014-12-22 Thread Frédéric Sureau

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 Thread Jean-Michel Hautbois
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

2014-12-19 Thread 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.

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 Thread Jean-Michel Hautbois
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

2014-12-18 Thread 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.

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 Thread 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 :) ?

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

2014-12-18 Thread 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.

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