Merge CV, ver=5.1; ops/methods from HV, and interface from CV where possible
[goodguy/history.git] / cinelerra-5.1 / cinelerra / libdv.h
diff --git a/cinelerra-5.1/cinelerra/libdv.h b/cinelerra-5.1/cinelerra/libdv.h
new file mode 100644 (file)
index 0000000..9cdec3c
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef LIBDV_H
+#define LIBDV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Buffer sizes
+#define DV_NTSC_SIZE 120000
+#define DV_PAL_SIZE 144000
+#define CODEC_TAG_DVSD "dvsd"
+
+// Norms
+#define DV_NTSC 0
+#define DV_PAL 1
+
+
+#include <libdv/dv.h>
+#include <pthread.h>
+#include <sys/time.h>
+
+typedef struct
+{
+       dv_decoder_t *decoder;
+       dv_encoder_t *encoder;
+       short *temp_audio[4];
+       unsigned char *temp_video;
+       int use_mmx;
+       int audio_frames;
+} dv_t;
+
+
+// ================================== The frame decoder
+dv_t* dv_new();
+int dv_delete(dv_t* dv);
+
+// Decode a video frame from the data and return nonzero if failure
+int dv_read_video(dv_t *dv,
+               unsigned char **output_rows,
+               unsigned char *data,
+               long bytes,
+               int color_model);
+// Decode audio from the data and return the number of samples decoded.
+int dv_read_audio(dv_t *dv,
+               unsigned char *samples,
+               unsigned char *data,
+               long size,
+               int channels,
+               int bits);
+
+void dv_write_video(dv_t *dv,
+               unsigned char *data,
+               unsigned char **input_rows,
+               int color_model,
+               int norm);
+
+// Write audio into frame after video is encoded.
+// Returns the number of samples put in frame.
+int dv_write_audio(dv_t *dv,
+               unsigned char *data,
+               unsigned char *input_samples,
+               int max_samples,
+               int channels,
+               int bits,
+               int rate,
+               int norm);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif