Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Video Encoding > MPEG-4 Encoder GUIs

Reply
 
Thread Tools Search this Thread Display Modes
Old 14th June 2005, 19:20   #21  |  Link
xtknight
Registered User
 
Join Date: May 2005
Posts: 33
sorry ignore this...my f**k up...

I can't get it to work in general...the log didn't show all the info so I replicated the same command in the command line.

Command line:

PHP Code:
C:\Documents and Settings\unknown>"C:\tools\megui\mencoder.exe" "c:\mydocbackup\May 18-Channel 67 (7 19 pm) 001--mpeg2dec.avs" -ovc lavc -lavcopts vbitrate=80
-"C:\Documents and Settings\unknown\Desktop\test.m4v" -of rawvideo
MEncoder dev
-CVS-050524-19:49-3.4.2 (C2000-2005 MPlayer Team
CPU
Advanced Micro Devices  (Family8Stepping0)
Detected cache-line size is 64 bytes
CPUflags
Type8 MMX1 MMX21 3DNow1 3DNow21 SSE0 SSE20
Compiled 
for x86 CPU with extensionsMMX MMX2 3DNow 3DNowEx SSE SSE2

85 audio 
199 video codecs
File not found
'frameno.avi'
Failed to open frameno.avi
success
format0  data0x0 0x89
============ Sorrythis file format is not recognized/supported =============
=== If 
this file is an AVIASF or MPEG streamplease contact the author! ===
Cannot open demuxer.

Exiting... 
AviSynth script:

PHP Code:
MPEG2Source("C:\Documents and Settings\unknown\My Documents\May 18-Channel 67 (7 19 pm) 001.mpg"
This is understandable...it's an AviSynth script (it exists)...but why does your program import an AviSynth script when mencoder doesn't support it? Maybe it's just me? I've used mencoder with mpg files just fine. Never used vob/ifo files, etc...never recoded a DVD. I don't have any DVDs...I'm just trying to recode a TV show that was recorded in high bit-rate MPEG-2. Also any idea why mencoder doesn't recognize SSE/SSE2 in my Athlon64? Do I have to specify it manually some how? I'm asking all this now because I need to have a way to run MP4Box successfully from your program and fix the progress thing...

Last edited by xtknight; 14th June 2005 at 19:37.
xtknight is offline   Reply With Quote
Old 14th June 2005, 19:35   #22  |  Link
Doom9
clueless n00b
 
Join Date: Oct 2001
Location: somewhere over the rainbow
Posts: 10,579
If I can load the AviSynth script (e.g. you get a working preview window), then I have to assume it can be read. But, do you get that? You should see the video in the preview.. the thing is.. AviSynth displays a short video with the error if there's an internal error that isn't fatal. MPEG2Source expects a DGIndex project file though..

I'm afraid that's how it work.. if the AviSynth scrip can be opened with the AviFile API it is up to the user to decide if what he sees in the preview makes sense, and if it doesn't, fix it.

Create a dgindex project from your mpg file and load that via mpeg2source and everything should be okay.
Quote:
Also any idea why mencoder doesn't recognize SSE/SSE2 in my Athlon64?
That's normal.. it never has and never will. You'll find me asking the same thing in this very forum (not the same thread though I think).
__________________
For the web's most comprehensive collection of DVD backup guides go to www.doom9.org
Doom9 is offline   Reply With Quote
Old 14th June 2005, 19:52   #23  |  Link
xtknight
Registered User
 
Join Date: May 2005
Posts: 33
Quote:
Originally Posted by Doom9
If I can load the AviSynth script (e.g. you get a working preview window), then I have to assume it can be read. But, do you get that? You should see the video in the preview.. the thing is.. AviSynth displays a short video with the error if there's an internal error that isn't fatal. MPEG2Source expects a DGIndex project file though..

I'm afraid that's how it work.. if the AviSynth scrip can be opened with the AviFile API it is up to the user to decide if what he sees in the preview makes sense, and if it doesn't, fix it.

Create a dgindex project from your mpg file and load that via mpeg2source and everything should be okay.
That's normal.. it never has and never will. You'll find me asking the same thing in this very forum (not the same thread though I think).
Well I fixed one careless mistake...turns out that MPEG2 file in the avs file didn't exist since I reinstalled Windows and moved the documents dir...so I changed that...

Yeah it wasn't showing in the preview. So now I use DirectShowSource and it works just fine.

Now the audio and video encode fine but I can't get MP4Box to run from the queue...nothing is logged in regard to MP4Box.

A command line like this worked for me:

PHP Code:
C:\tools\megui>mp4box -add "C:\Documents and Settings\unknown\Desktop\may31rawaudio.mp4" -add "C:\Documents and Settings\unknown\Desktop\may31raw.m4v" -new "C:\Documents and Settings\unknown\Desktop\may31.mp4"

IsoMedia import track ID 1 Audio (SR 48000 2 channels) - SBR AAC
IsoMedia import 
track ID 2 media type odsm sub-type MPEG
IsoMedia import 
track ID 3 media type sdsm sub-type MPEG
MPEG
-4 Video import 720 x 480 25.0000 FPS
Indicated Profile
Simple Profile Level 3
Import results
500 VOPs (14 Is 486 Ps)
Converting to ISMA Audio-Video MP4 file...
Saving may31.mp40.500 secs Interleaving 
Then after all that I can't play the file but I guess that's a separate issue. Also, should the FPS stay at 29.97 for NTSC video? Do I need to add fps=29.97 at the end of my DirectShowSource command?

Alright now the audio plays with mplayerc and video plays with Moonlight player...

Last edited by xtknight; 14th June 2005 at 20:04.
xtknight is offline   Reply With Quote
Old 14th June 2005, 20:04   #24  |  Link
Doom9
clueless n00b
 
Join Date: Oct 2001
Location: somewhere over the rainbow
Posts: 10,579
[quote]Do I need to add fps=29.97 at the end of my DirectShowSource command? I strongly suggest that.. it may work without but it's safer to specify it. And you also need to add -fps 29.97 before the -new in your mp4box commandline.. else you end up with 25fps video as you may have noticed.

As for playback, there are plenty of good tips in this and the container forum. Basically get the latest ffdshow and haali spliter (or ffdshow + install Nero).

As far as running mp4box goes.. you have the source And if you're trying the alpha.. it might just be one of the million things that I broke since the latest stable release. I have the new version started for the first time now.. it's going to be a long while until everything works as it's supposed to.
__________________
For the web's most comprehensive collection of DVD backup guides go to www.doom9.org
Doom9 is offline   Reply With Quote
Old 14th June 2005, 20:13   #25  |  Link
xtknight
Registered User
 
Join Date: May 2005
Posts: 33
New windows installation so that's why I didn't have those codecs so thanks...I got it working now...plays fine and everything. It also muxes fine with the -fps 29.97.

IsoMedia import - track ID 1 - Audio (SR 48000 - 2 channels) - SBR AAC
IsoMedia import - track ID 2 - media type odsm sub-type MPEG
IsoMedia import - track ID 3 - media type sdsm sub-type MPEG
MPEG-4 Video import - 720 x 480 @ 29.9700 FPS

Last question-why is there 2 MPEG video tracks? I'm only giving it one raw input video file (just like your program would). Is one of them not video but extra information (like MPEG-21 or something)?

The thing is, I'm using your latest stable release (I believe), and MP4Box doesn't run with either that release (0.1914) or that latest dev release. I guess it's debugging time for me.

Last edited by xtknight; 14th June 2005 at 20:18.
xtknight is offline   Reply With Quote
Old 14th June 2005, 20:20   #26  |  Link
Doom9
clueless n00b
 
Join Date: Oct 2001
Location: somewhere over the rainbow
Posts: 10,579
well.. if you run mp4box -info (or something like that that works) on your audio .mp4 you'll see where those additional tracks come from. I don't particularly care why they are there.. but they are. If you care.. you'll find the answer somewhere in this forum.
__________________
For the web's most comprehensive collection of DVD backup guides go to www.doom9.org
Doom9 is offline   Reply With Quote
Old 14th June 2005, 21:48   #27  |  Link
xtknight
Registered User
 
Join Date: May 2005
Posts: 33
This has stumped me. Here is every line printed from stdout to the VS console (... as a placeholder):

PHP Code:
MPEG-4 Video import 720 x 480 29.9700 FPS
Indicated Profile
Simple Profile Level 1
Importing
: |                    | (01/100)
Importing: |                    | (02/100)
..........................................
Importing: |==================  | (9The thread '<No Name>' (0xbbchas exited with code 0 (0x0).
2/100)
Importing: |==================  | (93/100)
Importing: |==================  | (94/100)
..........................................
Importing: |=================== | (99/100)
                                                 
Import results500 VOPs (24 Is 476 Ps)
Converting to ISMA Audio-Video MP4 file...
Saving test6.mp40.500 secs Interleaving
Writing
: |                    | (01/100)
Writing: |                    | (02/100)
Writing: |                    | (03/100)
Writing: |                    | (04/100)
Writing: |=                   | (05/100)
Writing: |=                   | (06/100)
Writing: |=                   | (07/100)
Writing: |=                   | (08/100)
Writing: |=                   | (09/100)
Writing: |==                  | (10/100)
Writing: |==                  | (11/100)
Writing: |==                  | (12/100)
Writing: |==         The thread '<No Name>' (0xbf8has exited with code 0 (0x0).
         | (
13/100
I noticed threads exiting between the progress indicators. And at the last one, a thread exited and the progress indicator stopped indefinitely. The interesting thing is the stderr reader thread is never aborted manually yet it ends abruptly for some reason. Maybe because of an exception...but why would there be an exception reading stderr when there's clearly output?

Last edited by xtknight; 15th June 2005 at 00:09.
xtknight is offline   Reply With Quote
Old 14th June 2005, 22:14   #28  |  Link
Doom9
clueless n00b
 
Join Date: Oct 2001
Location: somewhere over the rainbow
Posts: 10,579
@berrinam: could you post the autocrop code as well?

@xtknight: I think by now I've catched pretty much all the stdout/read error messages.. if you look at Encoder.cs you'll see I use a lot of try/catch.. so the only time such a thread would exit is if the process has ended.. you can easily verify that by placing breakpoints.
__________________
For the web's most comprehensive collection of DVD backup guides go to www.doom9.org
Doom9 is offline   Reply With Quote
Old 15th June 2005, 00:23   #29  |  Link
xtknight
Registered User
 
Join Date: May 2005
Posts: 33
Quote:
Originally Posted by Doom9
@berrinam: could you post the autocrop code as well?

@xtknight: I think by now I've catched pretty much all the stdout/read error messages.. if you look at Encoder.cs you'll see I use a lot of try/catch.. so the only time such a thread would exit is if the process has ended.. you can easily verify that by placing breakpoints.
And that's exactly why I'm confused...there are no exceptions...

Unfortunately stuff like this happens in real time so breakpoints just don't work very well. The breakpoints won't stop the muxer so I can't see where its erroring...

So what I've decided to do is make a separate program to demonstrate the functionality, for two reasons:

1. MeGUI overwhelms me and it's hard to debug in such a big environment, especially having not wrote the program in the first place.

2. It's isolated and I can spend more time coding and less time browsing for my media files in the GUI itself to test it...

I hope you don't mind.

Update: Well what I think happening is the process exiting before the program has a chance to get the stdout...but I have no idea how to fix that. With the stdout redirect in DOS (>) I can get all of the messages from MP4Box, but in C# it just isn't getting the messages. If there's no other way to get the full stdout in C#, you could just open the file stdout-redirected to by DOS, and constantly read that in. Not that best way to do it though...well I hope I saved you some time anyway. If you want me to read progress using the DOS-outputed stdout, let me know. I wish there was a way to delay the process from exiting so it could get all the stdout. That would be ideal. Like I said there are no exceptions being thrown.

Last edited by xtknight; 15th June 2005 at 01:11.
xtknight is offline   Reply With Quote
Old 15th June 2005, 07:25   #30  |  Link
Doom9
clueless n00b
 
Join Date: Oct 2001
Location: somewhere over the rainbow
Posts: 10,579
Quote:
Update: Well what I think happening is the process exiting before the program has a chance to get the stdout...
uh, did you combine the output of multiple processes? there is a way to read everything from stdout.. process.ReadToEnd (or something similar.. I'm not in the IDE right now)

As I said previously, mp4box "running away" was what made me stop working on this.. but as it only runs away while writing the final output file.. it might not be terribly nice to have a progress bar that doesn't run linearly, but basically you could still use it for the importing.. I was thinking of having some indicator in the status update telling people "importing video", "importing audio1", "importing audio2", "importing subtitle1", .. "writing output", "splitting output", and each starts at 0%. The "running away" only seems to be happening in the last step.. so you can work around this by just not bothering with the progress in the last step, but rather use ideas from previous versiont that used mp4box, and simply have a thread that reads the output filesize and calculates the completion percentage from what you think the size should be and what it is.. it's not terribly accurate but it'll do just fine.

I never said it was straightforward.. why do you think I put it on hold? I even asked in the mp4box forum why mp4box acts the way it does : http://sourceforge.net/forum/forum.p...orum_id=287547. No reply in almost 2 months.. clearly 3rd party programs using mp4box are no priority for the developers.

Quote:
If you want me to read progress using the DOS-outputed stdout, let me know.
Isn't that supposed to fail? If you have a file open in write mode, other processes cannot access it, can they?

P.S. You are now at the point where I was when I decided I wanted to do less boring things and hoping that the mp4box devs would do something about this behavior.. the challenge is going from this point to a working solution

P.S.2 ) Perhaps I ought to file this behavior as a bug? After all except for the writing stage stdout is blocking.
__________________
For the web's most comprehensive collection of DVD backup guides go to www.doom9.org
Doom9 is offline   Reply With Quote
Old 15th June 2005, 11:52   #31  |  Link
berrinam
Registered User
 
berrinam's Avatar
 
Join Date: Apr 2005
Posts: 1,740
Quote:
Originally Posted by Doom9
@berrinam: could you post the autocrop code as well?
Sorry about that, here are both pieces of code (now working )

Cropping function (changed):
Code:
private unsafe void cropImage(ref Bitmap b)
{
	BitmapData image = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
	byte* pointer = (byte*)image.Scan0.ToPointer();
	byte* pixel;
	int stride = image.Stride;
	byte white = (byte) Color.White.R;
	
	pixel = pointer;
	int width = b.Width;
	int height = b.Height;
	int width3 = 3 * width;
	int left3 = 3 * left;
	int right3 = 3 * right;

	int lineGap = stride - width3;
	int centerJump = width3 - left3 - right3;
	for (int j = 0; j < top; j++) 
	{
		for (int i = 0; i < width3; i++) {
			*pixel = white;
			pixel++;
		}
		pixel += lineGap;
	}
	int heightb = height - bottom;
	for (int j = top; j < heightb; j++)
	{
		for (int i = 0; i < left3; i++) {
			*pixel = white;
			pixel++;
		}
		pixel += centerJump;
		for (int i = 0; i < right3; i++) {
			*pixel = white;
			pixel++;
		}
		pixel += lineGap;
	}
	for (int j = b.Height-bottom; j < height; j++)
	{
		for (int i = 0; i < width3; i++)
		{
			*pixel = white;
			pixel++;
		}
		pixel += lineGap;
	}
	b.UnlockBits(image);
}
Autocropping function (including a changed isBadPixel(int) function):
Code:
private bool isBadPixel(int pixel)
{
	int comp = 12632256;
	int res = pixel & comp;
	return (res != 0);
}
/// <summary>
/// iterates through the lines and columns of the bitmap and checks whether the brightness of each pixel is under a certain threshold (isBadPixel)
/// if enough 'bad pixels' are found, this line is assumed to be an image line. Cropping is done up to the first such line.
/// </summary>
/// <param name="b">the bitmap to be analyzed</param>
/// <returns>struct containing the number of lines to be cropped away from the left, top, right and bottom</returns>
private unsafe CropValues getAutoCropValues(Bitmap b)
{
	// When locking the pixels into memory, they are currently being converted from 24bpp to 32bpp. This incurs a small (5%) speed penalty,
	// but means that pixel management is easier, because each pixel is a 4-byte int.
	BitmapData image = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
	int* pointer = (int*) image.Scan0.ToPointer();
	int* lineBegin, pixel;
	int stride = image.Stride / 4;
	CropValues retval = new CropValues();
	bool lineFound = false;
	int badPixelThreshold = 50;
	int widthBadPixelThreshold = b.Width / badPixelThreshold;
	int heightBadPixelThreshold = b.Height / badPixelThreshold;
	int nbBadPixels = 0;
	
	lineBegin = pointer;
	for (int i = 0; i < b.Width; i++)
	{
		pixel = lineBegin;
		for (int j = 0; j < b.Height; j++)
		{
			//if (b.GetPixel(i, j) != prevColor)
			//if (isBadPixel(b.GetPixel(i, j)))
			if (isBadPixel(*pixel))
				nbBadPixels++;
			if (nbBadPixels  > heightBadPixelThreshold)
			{
				retval.left = i - 1;
				if (retval.left < 0)
					retval.left = 0;
				if (retval.left % 2 != 0)
					retval.left++;
				lineFound = true;
				break;
			}
			pixel += stride;
		}
		nbBadPixels = 0;
		if (lineFound)
			break;
		lineBegin += 1; // 4-byte Argb
	}
	nbBadPixels = 0;
	lineFound = false;
	lineBegin = pointer;
	for (int i = 0; i < b.Height; i++)
	{
		pixel = lineBegin;
		for (int j = 0; j < b.Width; j++)
		{
			//if (b.GetPixel(j, i) != prevColor)
			//if (isBadPixel(b.GetPixel(j, i)))
			if (isBadPixel(*pixel))
				nbBadPixels++;
			if (nbBadPixels > widthBadPixelThreshold)
			{
				retval.top = i - 1;
				if (retval.top < 0)
					retval.top = 0;
				if (retval.top % 2 != 0)
					retval.top++;
				lineFound = true;
				break;
			}
			pixel += 1; // 4-byte Argb
		}
		nbBadPixels = 0;
		if (lineFound)
			break;
		lineBegin += stride;
	}
	nbBadPixels = 0;
	lineFound = false;
	lineBegin = pointer + b.Width - 1;
	for (int i = b.Width - 1; i >= 0 ; i--)
	{
		pixel = lineBegin;
		for (int j = 0; j < b.Height; j++)
		{
			//if (b.GetPixel(i, j) != prevColor)
			//if (isBadPixel(b.GetPixel(i, j)))
			if (isBadPixel(*pixel))
				nbBadPixels++;
			if (nbBadPixels > heightBadPixelThreshold)
			{
				retval.right = b.Width - i;
				if (retval.right < 0)
					retval.right = 0;
				if (retval.right % 2 != 0)
					retval.right++;
				lineFound = true;
				break;
			}
			pixel += stride;
		}
		nbBadPixels = 0;
		if (lineFound)
			break;
		lineBegin -= 1; // Backwards across 4-byte Argb
	}
	nbBadPixels = 0;
	lineFound = false;
	lineBegin = pointer + stride * (b.Height-1);
	for (int i = b.Height - 1; i >= 0 ; i--)
	{
		pixel = lineBegin;
		for (int j = 0; j < b.Width; j++)
		{
			//if (b.GetPixel(j, i) != prevColor)
			//if (isBadPixel(b.GetPixel(j, i)))
			if (isBadPixel(*pixel))
				nbBadPixels++;
			if (nbBadPixels > widthBadPixelThreshold)
			{
				retval.bottom = b.Height - i;
				if (retval.bottom < 0)
					retval.bottom = 0;
				if (retval.bottom % 2 != 0)
					retval.bottom++;
				lineFound = true;
				break;
			}
			pixel += 1;// 4-byte Argb
		}
		nbBadPixels = 0;
		if (lineFound)
			break;
		lineBegin -= stride;
	}
	return retval;

}
The unsafe autocropping is about 4-8 times faster than before. Unsafe compiling must be allowed, though (Project->MeGUI properties->Build->Allow unsafe code blocks).
berrinam is offline   Reply With Quote
Old 15th June 2005, 18:26   #32  |  Link
Doom9
clueless n00b
 
Join Date: Oct 2001
Location: somewhere over the rainbow
Posts: 10,579
Quote:
here are both pieces of code
Thanks. I'll integrate them shortly.

I had another idea about the mp4box "running away" problem. We know that this only happens in the last phase (correct me if I'm wrong), so you could rely on stdout for status updates until that last phase, then no longer send out status updates from the thread that reads stdout, but have another thread that reads the filesize and compares it to what you're supposed to get. And if the last step is splitting, since you know how mp4box names the split files, you can compare the size of the split file(s) with the size of the muxed mp4 and send statusupdates based on that).
__________________
For the web's most comprehensive collection of DVD backup guides go to www.doom9.org
Doom9 is offline   Reply With Quote
Old 15th June 2005, 21:24   #33  |  Link
xtknight
Registered User
 
Join Date: May 2005
Posts: 33
OK Doom9 I sent you a PM with the sample stdout interpreter/progress bar. It can update the status with either importing or writing (the only two I see when I mux video/audio). Enjoy. The path for muxing is hard-coded so when you integrate it you'll have to replace that obviously. For testing just specify the correct path for MP4Box and the MP4Box command line in the process.arguments. I don't know what was wrong with the StreamReader code you had but this class I got from CodeProject (http://www.codeproject.com/csharp/LaunchProcess.asp) seemed to do the trick, and it was easy as child's play from there.

On the left of my program's dialog it shows the actual stdout and on the right the interpreted form of it. Above both of those textboxes lies a label and a progress bar which also represent the status.

I also used the getLineType function among others from your program, and they include slight modifications.

Note: that CodeProject article says ReadToEnd() won't work because the status update in the GUI has to be synchronous and realtime with the external process's stdout. My testing seemed to confirm this.

Last edited by xtknight; 15th June 2005 at 21:40.
xtknight is offline   Reply With Quote
Old 15th June 2005, 21:42   #34  |  Link
Doom9
clueless n00b
 
Join Date: Oct 2001
Location: somewhere over the rainbow
Posts: 10,579
Quote:
Note: that CodeProject article says ReadToEnd() won't work because the status update in the GUI has to be synchronous and realtime with the external process's stdout.
correct.. you can use ReadToEnd to get everything until the process exits.. but that method only returns when the process has exited.

Anyway, thanks and I'll look at it once I have the next release ready (hopefully tomorrow.. I have audio and video encoding done.. now working on getting the auto mode to work properly again). and I want to move around profile creation as well.
__________________
For the web's most comprehensive collection of DVD backup guides go to www.doom9.org
Doom9 is offline   Reply With Quote
Old 18th June 2005, 18:19   #35  |  Link
Doom9
clueless n00b
 
Join Date: Oct 2001
Location: somewhere over the rainbow
Posts: 10,579
Just letting you know that I've added the sources of the latest published version to the first post.
__________________
For the web's most comprehensive collection of DVD backup guides go to www.doom9.org
Doom9 is offline   Reply With Quote
Old 18th June 2005, 19:25   #36  |  Link
xtknight
Registered User
 
Join Date: May 2005
Posts: 33
I got ahold of assembler gray-scale code. I'll see if I can get C# to execute it. I have VB.NET code to execute inline assembly so it shouldn't be too hard. It should be fast enough to do gray-sacle in realtime.
xtknight is offline   Reply With Quote
Old 18th June 2005, 19:35   #37  |  Link
Doom9
clueless n00b
 
Join Date: Oct 2001
Location: somewhere over the rainbow
Posts: 10,579
Uh.. grayscale why? Because of the sample I posted? I'm never using grayscale conversion and your code seems just fine. Better look at one of the other features that are still missing.
__________________
For the web's most comprehensive collection of DVD backup guides go to www.doom9.org
Doom9 is offline   Reply With Quote
Old 18th June 2005, 20:19   #38  |  Link
xtknight
Registered User
 
Join Date: May 2005
Posts: 33
Quote:
Originally Posted by Doom9
Uh.. grayscale why? Because of the sample I posted? I'm never using grayscale conversion and your code seems just fine. Better look at one of the other features that are still missing.
oh...ok...I just happened to stumble across grayscale ASM code by mistake. This code generally just multiplies each R,G,B pixel by a factor. So technically it could be used for whatever you were intending ("marking" pixels?) I never knew what you were trying to do but if the code you have is fast enough already I guess there's no need.

Last edited by xtknight; 18th June 2005 at 20:21.
xtknight is offline   Reply With Quote
Old 18th June 2005, 21:37   #39  |  Link
Doom9
clueless n00b
 
Join Date: Oct 2001
Location: somewhere over the rainbow
Posts: 10,579
mixing managed code with Assembly? that must be real ugly.

Anyway, I finally integrated your code and it really speeds things up. And as you can see I'm already working on some other stuff but I still could use some help with other items.
__________________
For the web's most comprehensive collection of DVD backup guides go to www.doom9.org
Doom9 is offline   Reply With Quote
Old 19th June 2005, 00:41   #40  |  Link
xtknight
Registered User
 
Join Date: May 2005
Posts: 33
Quote:
Originally Posted by Doom9
mixing managed code with Assembly? that must be real ugly.
Properly written assembler isn't any worse than unmanaged C++. It's not exactly a 'fashion statement', though. :P

Quote:
Anyway, I finally integrated your code and it really speeds things up. And as you can see I'm already working on some other stuff but I still could use some help with other items.
Give credit to berrinam, he wrote that code, not me.

Last edited by xtknight; 19th June 2005 at 00:43.
xtknight is offline   Reply With Quote
Reply

Tags
development, megui, not a help thread

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 06:22.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2020, vBulletin Solutions Inc.