New JPEG 2000 Encoder

112 views
Skip to first unread message

Aaron Boxer

unread,
Nov 3, 2014, 4:38:00 PM11/3/14
to ope...@googlegroups.com
Hello!

I am currently working on a fast, open source JPEG 2000 encoder. This project is using the OpenCL
language to run on either CPU or GPU - my goal is to reach 30 FPS for 4K video on newest
graphics hardware - Radeon 290X or GeForce 980. 

I am hoping to plug this encoder into the OpenJPEG project once the encoder is complete.

My post here is to introduce this project, and also to get feedback from the community
about the encoder.

https://github.com/CodecCentral/roger

License is: GPL 3 Affero.

Thanks,
Aaron Boxer




Terrence

unread,
Nov 3, 2014, 5:05:23 PM11/3/14
to ope...@googlegroups.com
Hi Aaron,

It's great you are working on a new encoder. I'll be curious to see
the results. I've been a bit skeptical about GPU advantages for
JPEG2000 due to the overheard required move data between the host and
the GPU as well as the context startup cost. OpenCL is certainly a
better path than CUDA, so that's a good choice. Does the encoder
compile for OSX? If so, I can certainly investigate adding support
into OpenDCP.

-Terrence
> --
> You received this message because you are subscribed to the Google Groups
> "opendcp" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to opendcp+u...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

Aaron Boxer

unread,
Nov 3, 2014, 9:48:40 PM11/3/14
to ope...@googlegroups.com
Hi Terrence,

 
It's great you are working on a new encoder. I'll be curious to see
the results. I've been a bit skeptical about GPU advantages for
JPEG2000 due to the overheard required move data between the host and
the GPU as well as the context startup cost.

Thanks. Yes, you raise a very valid point: for a discrete GPU, sitting on the PCI bus,
there is significant time spent moving the data back and forth. That is why, at the moment,
GPU may *not* be worthwhile for single frame encoding.  However, DCP encoding is a
perfect GPU use-case, because it allows us to pipeline the data movement. So while
one frame is being encoded, another raw frame is being moved to the card, while a second encoded bit stream is
being moved back to the host. This overlapping essentially eliminates the time spent on
the PCI bus, although there is some latency. But a few frames latency is certainly manageable.

Two new developments may improve the situation for single frame encoding:

1) AMD APUs, which allow CPU and GPU to share the same memory space, are getting more powerful. In this case,
there is no PCI bus to worry about. So, in a few years, I believe that APUs will be up to the task of high performance
encoding.

2) PCIe 4 should be arriving in 2016, with double the bandwidth of PCIe 3.

 
OpenCL is certainly a
better path than CUDA, so that's a good choice. Does the encoder
compile for OSX? If so, I can certainly investigate adding support
into OpenDCP.


I am pretty sure this will compile on OSX - it is 90% OpenCL and ANSI C++ code.
Thanks for the offer of adding support into OpenDCP. I hope to have an alpha version
ready in spring of next year.

Cheers,
Aaron

Reply all
Reply to author
Forward
0 new messages