Originally posted by: Henrah
With NV pushing CUDA and ATI pushing OpenCL, will developers mind programming for both (and how hard is it to do so), or might this be like BluRay/HD-DVD?
for most people, the encoder of choice is x264, and we use frontends like handbrake or automkv and others. x264 is parallelizable up to 16 threads or so, but beyond that it actually starts to slow down. motion estimation is the primary thing we want to run on the GPU leaving the rest for the CPU, so you have each chip doing what they do best and the result is faster than a GPU-only or CPU-only encode.
this is why the earliest implementation of GPGPU-based encoding applications were not that fast. in fact, cyberlink's mediashow espresso is only ~3x faster with a CUDA-assisted encode. the problem is that every GPGPU encoder, including cyberlink, is horrible. the output quality is not great and the user has absolutely no control over encoding parameters (they are too obfuscated into the writer's narrow "lets just get this working" framework). the program GUIs are insultingly graphical and there's absolutely no ability to customize your work. there are 3 or 4 presets and that's it. maybe they are marketing the program to kids. can't say, since it's so revolutionary in this one aspect, yet completely unsuitable in all other aspects. i really don't even know why they bothered. they thought they could take the same lazy-ass approach that worked with PowerDVD for so long, but no. parallel computing is hard.
still, people with GPUs are going to want that 300% boost. we are just waiting for handbrake or automkv to implement it so that we can have more "expert" encoding options available rather than a few pathetic presets. it probably isn't going to happen from them, though. it'll likely be someone else starting a totally new open source project, and it's likely to be opencl because it's royalty free and will run on ATI and nvidia.
