Imported Debian version 2.5.0~trusty1.1
[deb_ffmpeg.git] / ffmpeg / libavcodec / vorbis_parser.h
index 590101bbad7a433d698391c28bec5bbdbfbe2763..0f73537ae5392a26ca31fefe59304fb3edbdd0b0 100644 (file)
@@ -1,5 +1,4 @@
 /*
- * Copyright (c) 2012 Justin Ruggles
  *
  * This file is part of FFmpeg.
  *
 
 /**
  * @file
- * Vorbis audio parser
+ * A public API for Vorbis parsing
  *
  * Determines the duration for each packet.
  */
 
-#ifndef AVCODEC_VORBIS_PARSER_H
-#define AVCODEC_VORBIS_PARSER_H
+#ifndef AVCODEC_VORBIS_PARSE_H
+#define AVCODEC_VORBIS_PARSE_H
 
-#include "avcodec.h"
+#include <stdint.h>
 
-typedef struct VorbisParseContext {
-    AVCodecContext *avctx;      ///< codec context
-    int extradata_parsed;       ///< we have attempted to parse extradata
-    int valid_extradata;        ///< extradata is valid, so we can calculate duration
-    int blocksize[2];           ///< short and long window sizes
-    int previous_blocksize;     ///< previous window size
-    int mode_blocksize[64];     ///< window size mapping for each mode
-    int mode_count;             ///< number of modes
-    int mode_mask;              ///< bitmask used to get the mode in each packet
-    int prev_mask;              ///< bitmask used to get the previous mode flag in each packet
-} VorbisParseContext;
+typedef struct AVVorbisParseContext AVVorbisParseContext;
 
 /**
- * Initialize the Vorbis parser using headers in the extradata.
+ * Allocate and initialize the Vorbis parser using headers in the extradata.
  *
  * @param avctx codec context
  * @param s     Vorbis parser context
  */
-int avpriv_vorbis_parse_extradata(AVCodecContext *avctx, VorbisParseContext *s);
+AVVorbisParseContext *av_vorbis_parse_init(const uint8_t *extradata,
+                                           int extradata_size);
+
+/**
+ * Free the parser and everything associated with it.
+ */
+void av_vorbis_parse_free(AVVorbisParseContext **s);
 
 #define VORBIS_FLAG_HEADER  0x00000001
 #define VORBIS_FLAG_COMMENT 0x00000002
@@ -56,8 +51,7 @@ int avpriv_vorbis_parse_extradata(AVCodecContext *avctx, VorbisParseContext *s);
 /**
  * Get the duration for a Vorbis packet.
  *
- * avpriv_vorbis_parse_extradata() must have been successfully called prior to
- * this in order for a correct duration to be returned. If @p flags is @c NULL,
+ * If @p flags is @c NULL,
  * special frames are considered invalid.
  *
  * @param s        Vorbis parser context
@@ -65,22 +59,19 @@ int avpriv_vorbis_parse_extradata(AVCodecContext *avctx, VorbisParseContext *s);
  * @param buf_size size of the buffer
  * @param flags    flags for special frames
  */
-int avpriv_vorbis_parse_frame_flags(VorbisParseContext *s, const uint8_t *buf,
-                                    int buf_size, int *flags);
+int av_vorbis_parse_frame_flags(AVVorbisParseContext *s, const uint8_t *buf,
+                                int buf_size, int *flags);
 
 /**
  * Get the duration for a Vorbis packet.
  *
- * avpriv_vorbis_parse_extradata() must have been successfully called prior to
- * this in order for a correct duration to be returned.
- *
  * @param s        Vorbis parser context
  * @param buf      buffer containing a Vorbis frame
  * @param buf_size size of the buffer
  */
-int avpriv_vorbis_parse_frame(VorbisParseContext *s, const uint8_t *buf,
-                              int buf_size);
+int av_vorbis_parse_frame(AVVorbisParseContext *s, const uint8_t *buf,
+                          int buf_size);
 
-void avpriv_vorbis_parse_reset(VorbisParseContext *s);
+void av_vorbis_parse_reset(AVVorbisParseContext *s);
 
-#endif /* AVCODEC_VORBIS_PARSER_H */
+#endif /* AVCODEC_VORBIS_PARSE_H */