<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>