]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/adx.h
ape: Support _0000 files with nblock smaller than 64
[ffmpeg] / libavcodec / adx.h
index cd8c45bf6df2815021860c3f9f2833c3209fc40a..9ae84dcec1fa82edc1225d0ceba317cd7d4049bd 100644 (file)
 #ifndef AVCODEC_ADX_H
 #define AVCODEC_ADX_H
 
-typedef struct {
+#include <stdint.h>
+
+#include "avcodec.h"
+
+typedef struct ADXChannelState {
     int s1,s2;
 } ADXChannelState;
 
-typedef struct {
+typedef struct ADXContext {
     int channels;
     ADXChannelState prev[2];
     int header_parsed;
-    unsigned char dec_temp[18*2];
-    int in_temp;
+    int eof;
     int cutoff;
     int coeff[2];
 } ADXContext;
 
 #define COEFF_BITS  12
 
+#define BLOCK_SIZE      18
+#define BLOCK_SAMPLES   32
+
 /**
  * Calculate LPC coefficients based on cutoff frequency and sample rate.
  *
@@ -57,4 +63,18 @@ typedef struct {
  */
 void ff_adx_calculate_coeffs(int cutoff, int sample_rate, int bits, int *coeff);
 
+/**
+ * Decode ADX stream header.
+ * Sets avctx->channels and avctx->sample_rate.
+ *
+ * @param      avctx        codec context
+ * @param      buf          header data
+ * @param      bufsize      data size, should be at least 24 bytes
+ * @param[out] header_size  size of ADX header
+ * @param[out] coeff        2 LPC coefficients, can be NULL
+ * @return data offset or negative error code if header is invalid
+ */
+int ff_adx_decode_header(AVCodecContext *avctx, const uint8_t *buf,
+                         int bufsize, int *header_size, int *coeff);
+
 #endif /* AVCODEC_ADX_H */