04-05-2010 #11Banned User
- Join Date
- Jul 2008
I was able to pull down the trial file. I'm on Mac OS at the moment, so I can't install/decompress the installer, but I was wondering if anyone knows if the PS3 side of the application that is in that installer is the same as the tarball here:
This tarball claims to be the source code for CodecSys; it seems to me that it is the source for just the open source bits (kernel, busybox). Plus, there appears to be a mountable root filesystem, which has a file /app/cecom, which I think is the actual encoder binary. Any ideas if I'm right?
If the encoder binary is available, and the Windows part's API has been reverse engineered, then I think a free (as in cost) version of CodecSys basically available. Cool stuff!
Also, I was able to run the CodecSysApi files as well on my PC, after installing Qt4 (the version that ships with MinGW and gcc 4.4.0) to get all the DLL dependencies right. I have just gotten my Gig Ethernet card in today, so I'm going to try some encodes using the PS3! I'll keep you guys posted about how well it works.
Thanks a bunch zerotacg!
the image data is sent as yuv420 so depending on your resolution it's not that much data sent (width * height * 1.5). HD would be about 3MB/s or 24MBit/s so 100MBit should work well enough. Got GBit components here though so I can't try if 100MBit is enough.
And you don't need a direct link to the PS3 as CodecSys suggests works just fine with a switch.
So, this works quite nicely! I encoded some 1080i MPEG2 source material from my cable box, and it appears to have encoded at about 30fps.
The thing that I really need this for is encoding MPEG2 obtained from a cable box to h264. As such, the biggest features I need are cropping and resizing, and detelecine and decomb. I think ffmpeg can be used on the PC side to do all of this before sending yuv420 to the PS3 for encoding. I'll look into this and see if I can provide a patch.
Other nice features would be a frames per second display and estimated finish time. I'm sure the fixstars API has functions for getting at this info, and I'll look into it.
cropping can be easily done in the function that generates the yuv frames as needed for the ps3, did this for my self, I could update the code later on, just have to clean it up a bit.
As for resizing you take a look at "CFrameQueue::getConverted()" it uses the ffmpeg function for resizing/scaleing etc. I just use it to convert the frame to yuv420, but the function can resize n stuff as well.
As for interlacing that can be done by the API somehow, didn't look into it by now, but basicly you set the corresponding encoder setting and double the keyframe interval and some other settings.
Reminds me Resolutions have to be multiple of 16 in width and multiple of 2 (not sure maybe 4) in height, gives a parameter_error otherwise.
Edit: Just played around with the resizing a bit, the ps3 can do it for ya ;D only downsizing that is though. I'll try how to use interlacing next and will mash up a version with variable encoding parameters next
As far as the interlacing thing, I've looked into how to deinterlace content. Specifically, I've looked into detelecine, which reverses the progressive to interlaced process that happens when film is encoded for television. I think I might be able to implement this in your code; I'll let you know if I make progress.