Archive for August, 2008

yEnc Decoder compliance

Tuesday, August 26th, 2008

Not all yEnc decoders are equal.  Is your yEnc Decoder doing everything it should?  Or is it doing the bare minimum?

yEnc has more advantages than simply being smaller in size.  yEnc also ensures that the file has been delivered intact via two methods:

  • CRC32 Error Checking
  • File Size Checking

If you yEnc decoder doesn’t support the above features of yEnc, not only are you losing out on some of the benefits of yEnc, but your yEnc decoder is not even yEnc compliant.

CRC32 Error Checking

yEnc CRC32 error checking uses a technology similar to what CDs and DVDs use to check for errors.  It uses a mathematical algorithm at creation time to generate a checksum value based on the data and stores that checksum on the data.  At play time, the value is recomputed against the data and compared against the stored value.  If the checksums do not match, then an error has occurred while reading the data.

In order for a yEnc Decoder to be compliant with the latest yEnc standards, a yEnc Decoder must include CRC32 error checking.  All yEnc attachments have the CRC32 checksum, and if your yEnc Decoder isn’t evaluating the checksum, then you won’t know when you’ve downloaded a file that has been corrupted or modified since it was created.

You may download that treasured song that you’ve been looking for, then when you go to play it back, it may not play or it may contain defects.  At that point, it may be too late to try to download the song again from another source.

Embedded yEnc Decoders will not provide CRC32 error alerts.  yProxy notifies you immediately when an attachment with an error has been detected.  yProxy beeps and changes the system notification icon to one with a large red exclamation mark, in addition to logging the error.  None of yProxy’s competing yEnc proxies provide CRC32 error detection.

File Size Checking

The file size is also computed at creation time and stored in every yEnc attachment.  All yEnc compliant yEnc Decoders must check the final file size against the stored value.  If a file has been truncated by the news server or parts of it are missing, the file may be unusable.  It is important for your yEnc decoder to be able to determine the difference between a corrupt file and an incomplete file.

If the file is incomplete, you may simply need to try again later after the file has finished propagating.  An incomplete file may still be usable, depending on the type of file.  An MPEG video file with the last second missing will still be playable, and you may not notice that missing second.  Therefore, it is important for your yEnc decoder to distinguish between a corrupted file and an incomplete file.

yProxy notifies you immediately if the downloaded file size does not match the expected size.  yProxy will beep and place an exclamation mark in the system notification icon, in addition to logging the error.  The error displays the expected file size and the actual file size so that you can determine the extent of the problem.

Embedded yEnc decoders cannot check the file size and none of yProxy’s competing yEnc proxies provide file size checking.

yEnc Decoder Compliance

CRC32 error checking and file size checking are valuable features of yEnc encoding.  yEnc decoders must support both CRC32 error checking and file size checking in order to be compliant with the latest yEnc standards.  yProxy is the only yEnc decoder proxy that is yEnc compliant.


Why I turned off hyperthreading on my Windows PC

Friday, August 15th, 2008

I downloaded the 800 MB gameplay trailer for Diablo 3.  The trailer is in high resolution 720p (1280 x 720 pixels) and uses MP4 compression.  At resolution that size, it takes some serious CPU power to decompress the video in real time.

The computer that I was attempting to view the movie on has one Pentium 4 3.20 GHz CPU with hyperthreading, and 2 GB of RAM.

Hyperthreading separates the processor into two logical processors.  They do share some of the pipe, so it’s not quite as good as two actual logical processors.  The thing about hyperthreading though, is instead of one 3.20 GHz processor, I effectively get two 1.70 GHz processors.

Well, a 1.70 GHz processor isn’t enough to decompress the file in real time.  So, I had to turn off hyperthreading in the computer’s setup menu to get a single logical CPU that runs at 3.20 GHz, providing all of the CPU power to the movie player process.

Unfortunately, even that wasn’t quite fast enough, but it was close.  I haven’t noticed any decrease in performance since I’ve turned off hyperthreading, and I’d like to keep the CPU power on hand for the next time I need it.  So, I’m leaving hyperthreading off.

In my normal use, I’d rather have one process get finished very quickly, than have two processes take longer and finish at the same time.  I usually just have one process that I’m waiting on.