annotate oggdec.h @ 3044:410abc272c3b libavformat

Read match time delta in the frame header. We do not do anything with it as lavf does not really support it yet.
author michael
date Wed, 13 Feb 2008 20:17:28 +0000
parents 61ea9e6ee162
children bf39ed8d3d69
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2714
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
1 /**
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
2 Copyright (C) 2005 Michael Ahlberg, Måns Rullgård
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
3
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
4 Permission is hereby granted, free of charge, to any person
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
5 obtaining a copy of this software and associated documentation
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
6 files (the "Software"), to deal in the Software without
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
7 restriction, including without limitation the rights to use, copy,
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
8 modify, merge, publish, distribute, sublicense, and/or sell copies
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
9 of the Software, and to permit persons to whom the Software is
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
10 furnished to do so, subject to the following conditions:
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
11
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
12 The above copyright notice and this permission notice shall be
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
13 included in all copies or substantial portions of the Software.
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
14
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
16 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
17 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
18 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
19 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
20 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
21 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
22 DEALINGS IN THE SOFTWARE.
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
23 **/
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
24
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
25 #ifndef FFMPEG_OGGDEC_H
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
26 #define FFMPEG_OGGDEC_H
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
27
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
28 #include "avformat.h"
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
29
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
30 typedef struct ogg_codec {
3019
46c79fb51125 String pointers of ogg_codec_t should have const attribute.
reimar
parents: 2998
diff changeset
31 const int8_t *magic;
2714
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
32 uint8_t magicsize;
3019
46c79fb51125 String pointers of ogg_codec_t should have const attribute.
reimar
parents: 2998
diff changeset
33 const int8_t *name;
2714
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
34 int (*header)(AVFormatContext *, int);
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
35 int (*packet)(AVFormatContext *, int);
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
36 uint64_t (*gptopts)(AVFormatContext *, int, uint64_t);
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
37 } ogg_codec_t;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
38
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
39 typedef struct ogg_stream {
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
40 uint8_t *buf;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
41 unsigned int bufsize;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
42 unsigned int bufpos;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
43 unsigned int pstart;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
44 unsigned int psize;
2732
2b101e9d25c0 set PKT_FLAG_KEY for Theora and OGM streams
mru
parents: 2714
diff changeset
45 unsigned int pflags;
2714
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
46 uint32_t serial;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
47 uint32_t seq;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
48 uint64_t granule, lastgp;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
49 int flags;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
50 ogg_codec_t *codec;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
51 int header;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
52 int nsegs, segp;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
53 uint8_t segments[255];
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
54 void *private;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
55 } ogg_stream_t;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
56
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
57 typedef struct ogg_state {
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
58 uint64_t pos;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
59 int curidx;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
60 struct ogg_state *next;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
61 int nstreams;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
62 ogg_stream_t streams[1];
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
63 } ogg_state_t;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
64
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
65 typedef struct ogg {
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
66 ogg_stream_t *streams;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
67 int nstreams;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
68 int headers;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
69 int curidx;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
70 uint64_t size;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
71 ogg_state_t *state;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
72 } ogg_t;
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
73
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
74 #define OGG_FLAG_CONT 1
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
75 #define OGG_FLAG_BOS 2
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
76 #define OGG_FLAG_EOS 4
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
77
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
78 extern ogg_codec_t flac_codec;
2998
bc1504ae7a43 cosmetics: sort ogg_codec_t list
diego
parents: 2994
diff changeset
79 extern ogg_codec_t ogm_audio_codec;
bc1504ae7a43 cosmetics: sort ogg_codec_t list
diego
parents: 2994
diff changeset
80 extern ogg_codec_t ogm_old_codec;
bc1504ae7a43 cosmetics: sort ogg_codec_t list
diego
parents: 2994
diff changeset
81 extern ogg_codec_t ogm_text_codec;
bc1504ae7a43 cosmetics: sort ogg_codec_t list
diego
parents: 2994
diff changeset
82 extern ogg_codec_t ogm_video_codec;
2714
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
83 extern ogg_codec_t old_flac_codec;
3023
61ea9e6ee162 Add support for speex in ogg
reimar
parents: 3019
diff changeset
84 extern ogg_codec_t speex_codec;
2998
bc1504ae7a43 cosmetics: sort ogg_codec_t list
diego
parents: 2994
diff changeset
85 extern ogg_codec_t theora_codec;
bc1504ae7a43 cosmetics: sort ogg_codec_t list
diego
parents: 2994
diff changeset
86 extern ogg_codec_t vorbis_codec;
2714
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
87
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
88 extern int vorbis_comment(AVFormatContext *ms, uint8_t *buf, int size);
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
89
b22ba392ac21 Rename ogg2.[ch] to oggdec.[ch].
diego
parents:
diff changeset
90 #endif /* FFMPEG_OGGDEC_H */