Forums > Java

avi file writer+basic java questions

May 21, 2006 | 12:10 am

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


May 22, 2006 | 7:10 pm

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


May 28, 2006 | 10:13 am

> 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


Viewing 3 posts - 1 through 3 (of 3 total)