<div dir="ltr"><div><div><div>Ni Nicola,<br><br></div>Thanks for running these experiments - I didn't know about the timing feature in gstreamer.<br></div>It is interesting that openjpeg 2.1 is about 3 times slower than openjpeg 1.5. Since the core <br></div><div>encoding is not that different between the versions, the only explanation I can think of<br></div><div>is that the test source is monochrome, and openjpeg 2.1 encoder is treating it as RGB or YUV.<br></div><div>I will definitely take a look.<br><br></div><div>You mentioned that j2k file size is larger than jpeg encoded file size. One of the features of JPEG 2000<br></div><div>is that you have complete control over the file size / bit rate, through rate control, and also that<br></div><div>for the same bit rate, JPEG 2000 decompressed image quality is superior to JPEG decompressed image quality.<br></div><div>This is because of the J2K sub band decomposition, vs JPEG 8x8 block decomposition. <br><br>It is certainly possible to reduce the size of compressed images. I guess we simply do not have<br>a gstreamer property to set the bit rate. This is easily fixed.<br><br></div><div>As for the speed in general of OpenJPEG, I am working on a faster codec. <br></div><div>It is possible to significantly speed things up using multi-core, SIMD, and even GPU acceleration.<br><br></div><div>Cheers,<br></div><div>Aaron<br></div><div><br></div><div><br><br></div><div><div><div><div><br><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jun 26, 2016 at 4:10 AM, Mailing List SVR <span dir="ltr"><<a href="mailto:lists@svrinformatica.it" target="_blank">lists@svrinformatica.it</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Hi Aaron,<br>
<br>
first of all thanks for your efforts,<br>
<br>
I'm not a J2K user, I evaluated this codec some years ago but was
not suitable for my needs, <br>
<br>
in my use case I get video from network cameras and I can save or
restream using the same codec or a different codec (for example
jpeg2000). My input is never encoded as jpeg2000 (some cameras
support jpeg2000 but they support h264 too)<br>
<br>
The main reason to transcode is to reduce bandwidth and/or change
the original stream (add a text overlay, rotate the images ecc..)<br>
<br>
major problem with jpeg2000 is that encoding/decoding seems
terribly slow and encoder does not save bandwidth.<br>
<br>
Please take a look at the following pipelines<br>
<br>
gstreamer compiled against openjpeg 1.5.2<br>
<br>
gst-launch-1.0 videotestsrc num-buffers=100 ! openjpegenc !
fakesink silent=false sync=false<br>
Impostazione della pipeline a PAUSED ...<br>
La pipeline è in PREROLLING ...<br>
La pipeline è in PREROLLED ...<br>
Impostazione della pipeline a PLAYING ...<br>
New clock: GstSystemClock<br>
Ottenuto EOS dall'elemento «pipeline0».<br>
<font size="+1"><b>Execution ended after 0:00:08.701328003</b></font><br>
Impostazione della pipeline a PAUSED ...<br>
Impostazione della pipeline a READY ...<br>
Impostazione della pipeline a NULL ...<br>
Esecuzione di free sulla pipeline...<br>
<br>
gstreamer compiled against openjpeg 2.1<br>
<br>
gst-launch-1.0 videotestsrc num-buffers=100 ! openjpegenc !
fakesink silent=false sync=false<br>
Setting pipeline to PAUSED ...<br>
Pipeline is PREROLLING ...<br>
Pipeline is PREROLLED ...<br>
Setting pipeline to PLAYING ...<br>
New clock: GstSystemClock<br>
Got EOS from element "pipeline0".<br>
<font size="+1"><b>Execution ended after 0:00:26.328685923</b></font><br>
Setting pipeline to PAUSED ...<br>
Setting pipeline to READY ...<br>
Setting pipeline to NULL ...<br>
Freeing pipeline ...<br>
<br>
Now the same pipeline with other encoders:<br>
<br>
gst-launch-1.0 videotestsrc num-buffers=100 ! vp8enc ! fakesink
silent=false sync=false<br>
Setting pipeline to PAUSED ...<br>
Pipeline is PREROLLING ...<br>
Redistribute latency...<br>
Pipeline is PREROLLED ...<br>
Setting pipeline to PLAYING ...<br>
New clock: GstSystemClock<br>
Got EOS from element "pipeline0".<br>
<font size="+1"><b>Execution ended after 0:00:01.459543338</b></font><br>
Setting pipeline to PAUSED ...<br>
Setting pipeline to READY ...<br>
Setting pipeline to NULL ...<br>
Freeing pipeline ...<br>
<br>
gst-launch-1.0 videotestsrc num-buffers=100 ! jpegenc ! fakesink
silent=false sync=false<br>
Setting pipeline to PAUSED ...<br>
Pipeline is PREROLLING ...<br>
Pipeline is PREROLLED ...<br>
Setting pipeline to PLAYING ...<br>
New clock: GstSystemClock<br>
Got EOS from element "pipeline0".<br>
<font size="+1"><b>Execution ended after 0:00:00.052316056</b></font><br>
Setting pipeline to PAUSED ...<br>
Setting pipeline to READY ...<br>
Setting pipeline to NULL ...<br>
Freeing pipeline ...<br>
<br>
I don't know if the problem is inside openjpeg or in gstreamer
integration however this codec is actually too slow for my use
case, decoder seems slow too and produced files have a bigger size
than for example the ones obtained with jpegenc,<br>
<br>
is there some "magic" property to set to improve performance?<br>
<br>
thanks<br>
Nicola<br>
<br>
P.S. if you try avenc_jpeg2000 you'll get better performance so
maybe the problem is in openjpeg<div><div class="h5"><br>
<br>
Il 25/06/2016 17:22, Aaron Boxer ha scritto:<br>
</div></div></div>
<blockquote type="cite"><div><div class="h5">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>Dear GStreamers,<br>
<br>
</div>
I've spent the last month or so trying to improve
J2K support inside GStreamer ( with a lot of help
from the GStreamer gurus :) )<br>
<br>
</div>
I am very curious about how people are using
GStreamer to stream J2K content.<br>
</div>
Are there many people streaming J2K over RTP ? Are
people transcoding J2K assets<br>
</div>
to other formats such as H.264 or HEVC ? How much
interest is there in supporting<br>
</div>
J2K over MPEG TS ? What about motion J2K ?<br>
<br>
</div>
Any feedback on what people are doing, and what they would
like to see, would be most welcome.<br>
<br>
</div>
Thanks!<br>
</div>
Aaron<br>
</div>
<br>
<fieldset></fieldset>
<br>
</div></div><pre>_______________________________________________
gstreamer-devel mailing list
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a>
</pre>
</blockquote>
<br>
</div>
<br>_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
<br></blockquote></div><br></div></div></div></div></div></div>