PDA

View Full Version : Xvid: non-rectangular shapes are not supported error


foxtrotter
19th December 2005, 03:50
Hi guys,

Background:
First of all, I'm using xvidcore-1.1.0-beta2 (from xvid.org) on a laptop with a mobile Athlon XP2800, and 192MB of RAM, running WinXP Pro. I have built it w/ visual Studio 2003, and have had good success in getting the example decoder to work. I'm actually only interested in decoding for my application.

The MPEG-4 stream to be decoded will (eventually) be encoded by hardware, and transmitted over a network to my application, which will decode it, and display it on my GUI.

My GUI application is written in C#, and I've written a wrapper class, to allow me to use xvid to decode the mp4 stream that the GUI is receiving. To help simplify things, I've taken a clip from a movie trailer, and I've used it to debug my GUI. I've been successful in getting xvid to decode the clip up to a point. Thinking I had a bug in my wrapper class (in the buffering), I decided to run the clip through xvid_decraw.exe, and I'm seeing the same results.

Problemo:
I'm basically running xvid_decraw.exe on the clip, and after exactly 178 frames have been successfully decoded, an exception is thrown from xvid, and I'm getting the debug error that "non-rectangular shapes are not supported" and "data_partitioned not supported". Is this a problem with Xvid, or is it an error in the encoding by Quicktime?

The mp4 clip that I'm using is located at the link below:

I generated this clip with Quicktime Pro, at 30fps, 1 keyframe every frame (I think this means I-frames only, and no P-frames), and 2Mbps.

http://www363.pair.com/robotics/movies/mpeg_4/cars_30fps_1kf_2Mbps.mp4

Xvid Invocation:
C:\Xvid\xvidcore-1.1.0-beta2\build\win32\bin>xvid_decraw.exe -asm -debug 1 -i c:\mpeg4\cars_30fps_1kf_2Mbps.mp4 -d -c rgb24 -f tga

I've traced the place where the exception occurs down to the decoder_mbintra() method in decoder.c.

Debug output: Note: I've shortened the debug output to show the pertinent info, and xvid debug output is bold

non-rectangular shapes are not supported
data_partitioned not supported
decoder_iframe()
idct()
idct()
idct()
idct()
idct()
idct()
xxx
t16to8
...
idct()
idct()
idct()
idct()
idct()
fatal: invalid run
idct()
xxx
...
t16to8
idct()
idct()
idct()
idct()
<exception thrown here>


Question 1:
Could someone please shed some light on the problem, and why I'm getting these errors?

If it's a Quicktime error, then I'm not so concerned, but if it's an Xvid problem, I wanted to expose it so that it could possibly get fixed.

Question 2:
If I generate an mp4 clip with Quicktime using 30fps, and 1 keyframe ever 30 frames (I assume this is an I-frame, followed by 30 P-frames, and then another I-frame, etc), and a bitrate of 2Mbps, and try to decode it w/ xvid_decraw.exe, it enters an immediate infinite loop.

Any ideas why? Again, is the mp4 encoding from Quicktime have errors? I've tried this on several machines, and I get the same results.

Here's a link to that clip if anyone wants to try decoding it:


http://www363.pair.com/robotics/movies/mpeg_4/cars_30fps_30kf_2Mbps.mp4

Thanks for any responses,

Jason

sysKin
19th December 2005, 04:13
xvid_decraw doesn't support mp4 container, or any other container. It needs raw m4v data.
It probably only works for some frames because XviD's decoder is able to find supported mpeg4 headers and decode from there, skipping over mp4 data - up to a point where it stops working.

You need to demux mp4 first, then feed frames into decoder.

foxtrotter
19th December 2005, 04:49
Ahh! Yeah, I'd bet that would work much better! :)

Thanks a lot!

Jason