#include <unistd.h>
-#define HVPEG_EXE "/hveg2enc.plugin"
-#define MJPEG_EXE "/mpeg2enc.plugin"
+#define HVPEG_EXE "/hveg2enc"
+#define MJPEG_EXE "/mpeg2enc"
// M JPEG dependancies
// Construct command line
if(!result)
{
- char string[BCTEXTLEN]; string[0] = 0;
- sprintf(mjpeg_command, "%s%s",
- file->preferences->plugin_dir, HVPEG_EXE);
- append_vcommand_line(string);
+ char string[BCTEXTLEN];
+ get_exe_path(string);
+ sprintf(mjpeg_command, "%s/%s", string, HVPEG_EXE);
if(asset->aspect_ratio > 0)
{
// mjpegtools encoder
// this one is cinelerra-x.x.x/thirdparty/mjpegtools/mpeg2enc
{
- sprintf(mjpeg_command, "%s%s -v 0 ",
- file->preferences->plugin_dir, MJPEG_EXE);
+ char string[BCTEXTLEN];
+ get_exe_path(string);
+ sprintf(mjpeg_command, "%s/%s -v 0 ", string, MJPEG_EXE);
// Must disable interlacing if MPEG-1
switch (asset->vmpeg_preset)
// The current usage of mpeg2enc requires bitrate of 0 when quantization is fixed and
// quantization of 1 when bitrate is fixed. Perfectly intuitive.
- char string[BCTEXTLEN];
if(asset->vmpeg_fix_bitrate)
{
sprintf(string, " -b %d -q 1", asset->vmpeg_bitrate / 1000);
// Convert the index tables from tracks to channels.
- if(mpeg3_index_tracks(fd))
- {
-// Calculate size of buffer needed for all channels
- int buffer_size = 0;
- for(int i = 0; i < mpeg3_index_tracks(fd); i++)
- {
- buffer_size += mpeg3_index_size(fd, i) *
- mpeg3_index_channels(fd, i) *
- 2;
- }
-
+ if(mpeg3_index_tracks(fd)) {
IndexState *index_state = asset->index_state;
- index_state->index_buffer = new float[buffer_size];
-
- int index_channels = 0;
- for(int i = 0; i < mpeg3_index_tracks(fd); i++)
- index_channels += mpeg3_index_channels(fd, i);
-// Size of index buffer in floats
- int current_offset = 0;
-// Current asset channel
- int current_channel = 0;
- index_state->channels = index_channels;
- index_state->index_zoom = mpeg3_index_zoom(fd);
- index_state->index_offsets = new int64_t[index_channels];
- index_state->index_sizes = new int64_t[index_channels];
- for(int i = 0; i < mpeg3_index_tracks(fd); i++)
- {
- for(int j = 0; j < mpeg3_index_channels(fd, i); j++)
- {
- index_state->index_offsets[current_channel] = current_offset;
- index_state->index_sizes[current_channel] = mpeg3_index_size(fd, i) * 2;
- memcpy(index_state->index_buffer + current_offset,
- mpeg3_index_data(fd, i, j),
- mpeg3_index_size(fd, i) * sizeof(float) * 2);
-
- current_offset += mpeg3_index_size(fd, i) * 2;
- current_channel++;
+ int index_zoom = mpeg3_index_zoom(fd);
+ int ntracks = mpeg3_index_tracks(fd);
+ int64_t offset = 0;
+ for(int i = 0; i < ntracks; i++) {
+ int nch = mpeg3_index_channels(fd, i);
+ for(int j = 0; j < nch; j++) {
+ float *bfr = (float *)mpeg3_index_data(fd, i, j);
+ int64_t size = 2*mpeg3_index_size(fd, i);
+ index_state->add_index_entry(bfr, offset, size);
+ offset += size;
}
}
-
FileSystem fs;
- index_state->index_bytes = fs.get_size(asset->path);
-
- index_state->write_index(index_path,
- buffer_size * sizeof(float),
- asset,
- asset->audio_length);
- delete [] index_state->index_buffer;
-
- return 0;
+ int64_t file_bytes = fs.get_size(asset->path);
+ return index_state->write_index(index_path, asset, index_zoom, file_bytes);
}
return 1;