avi file writer+basic java questions

May 21, 2006 at 12:10am

avi file writer+basic java questions

hello,

I’m currently trying to make something like jit.qt.record but for writing
uncompressed avi files with alpha channel, to avoid unnecessary disk
fragmentation and time wasting one can get with huge .mov->.avi conversions,
and quirks many windows programs have when they have to deal with quicktime.

I’ve found .avi specifications+some java programs writing avi files, and it
seems to be easy to construct such a file, no problems with that. I’m
concerned with the following:

does jit.avi.record already exists?

and java related:

how long is long?
- it seems that my files would be more than 4gb, which is more than 32bits.

and jitter+java related:

in copyVectorToArray of JitterMatrix, what is ‘dim – the dimension of the
vector to copy’?
- I’ll need and int[] array containing 4-plane char jit.matrix data, should
this ‘dim’ be width*height? or should i just ignore this, and set it to 0
like in jitvectorprocess.java?

thanks,
nesa

#26090
May 22, 2006 at 7:10pm

On May 20, 2006, at 5:10 PM, nesa wrote:

>
> does jit.avi.record already exists?

Not to my knowledge. Sounds great though.

> and java related:
>
> how long is long?
> – it seems that my files would be more than 4gb, which is more than
> 32bits.

A long in Java is 64bits:

http://java.sun.com/docs/books/tutorial/java/nutsandbolts/da tatypes.html

> and jitter+java related:
>
> in copyVectorToArray of JitterMatrix, what is ‘dim – the dimension
> of the vector to copy’?

The dimension across which to copy (i.e. 0 is a row, 1 is a column, 2
would be a vector across depth).

> – I’ll need and int[] array containing 4-plane char jit.matrix
> data, should this ‘dim’ be width*height? or should i just ignore
> this, and set it to 0 like in jitvectorprocess.java?

This would be 0 for rows, and it doesn’t span around rows, though in
1.6, there’s also a new method or copying to/from an entire matrix to
a large 1D array (sorry the javadoc hasn’t yet been updated for 1.6),
but at the bottom, there’s raw javadoc. You might also consider
copying to a BufferedImage if you’ve already found code which works
with BufferedImage Data (JitterMatrix.createBufferedImage()).

/**
* copies a matrix into an int array.
* The elements of the matrix are read out in row-major order with
planes multiplexed.
* A higher-dimensional matrix will populate the array in 2D slices.
* float32 and float64 matrices will be cast to int.
* The array parameter must have exactly the same number of cells as
the matrix.
* @param data the integer array to populate
* @return the number of elements from the matrix that were copied
to the array
*/
public native int copyMatrixToArray(int data[]);
public native int copyMatrixToArray(float data[]);
public native int copyMatrixToArray(double data[]);

/**
* copies an int array into a matrix.
* The elements of the matrix are written out in row-major order
with planes multiplexed.
* A higher-dimensional matrix will be populated by the array in 2D
slices.
* data will be cast to the format of the matrix.
* The array parameter must have exactly the same number of cells as
the matrix.
* @param data the int array to populate the matrix from
* @return the number of elements from the array that were copied to
the matrix
*/
public native int copyArrayToMatrix(int data[]);
public native int copyArrayToMatrix(float data[]);
public native int copyArrayToMatrix(double data[]);

Hope this helps.

-Joshua

#77532
May 28, 2006 at 10:13am

> Hope this helps.

you bet it does!
thanks for java datatypes site, that exactly what i was looking for.

i’ve been fiddling with jmf, but unfortunately i’ve just wasted time: can’t
get it to export alpha channels properly, and it definitely can’t create avi
2.0(>1gb) so it sucks. it seemed a bit slow and memory-hungry too. i guess
it’s time to install visual c++ express:)

best,
nesa

#77533

You must be logged in to reply to this topic.