Mercurial > libavformat.hg
annotate oggparsevorbis.c @ 3565:b3e976d080cd libavformat
Move set_codec_from_probe_data() up to where the other probe functions are.
| author | michael |
|---|---|
| date | Sat, 12 Jul 2008 13:25:26 +0000 |
| parents | 6f61c3b36632 |
| children | c3c1b9302005 |
| rev | line source |
|---|---|
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
1 /** |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
2 Copyright (C) 2005 Michael Ahlberg, Måns Rullgård |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
3 |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
4 Permission is hereby granted, free of charge, to any person |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
5 obtaining a copy of this software and associated documentation |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
6 files (the "Software"), to deal in the Software without |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
7 restriction, including without limitation the rights to use, copy, |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
8 modify, merge, publish, distribute, sublicense, and/or sell copies |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
9 of the Software, and to permit persons to whom the Software is |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
10 furnished to do so, subject to the following conditions: |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
11 |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
12 The above copyright notice and this permission notice shall be |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
13 included in all copies or substantial portions of the Software. |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
14 |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
16 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
17 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
18 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
19 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
20 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
21 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
22 DEALINGS IN THE SOFTWARE. |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
23 **/ |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
24 |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
25 #include <stdlib.h> |
| 3286 | 26 #include "libavutil/avstring.h" |
| 27 #include "libavutil/bswap.h" | |
| 28 #include "libavcodec/bitstream.h" | |
| 29 #include "libavcodec/bytestream.h" | |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
30 #include "avformat.h" |
| 2714 | 31 #include "oggdec.h" |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
32 |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
33 extern int |
| 2197 | 34 vorbis_comment(AVFormatContext * as, uint8_t *buf, int size) |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
35 { |
| 2996 | 36 const uint8_t *p = buf; |
| 37 const uint8_t *end = buf + size; | |
| 2595 | 38 unsigned s, n, j; |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
39 |
| 2595 | 40 if (size < 8) /* must have vendor_length and user_comment_list_length */ |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
41 return -1; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
42 |
| 2600 | 43 s = bytestream_get_le32(&p); |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
44 |
| 2601 | 45 if (end - p < s) |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
46 return -1; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
47 |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
48 p += s; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
49 |
| 2600 | 50 n = bytestream_get_le32(&p); |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
51 |
| 2601 | 52 while (p < end && n > 0) { |
| 2996 | 53 const char *t, *v; |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
54 int tl, vl; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
55 |
| 2600 | 56 s = bytestream_get_le32(&p); |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
57 |
| 2601 | 58 if (end - p < s) |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
59 break; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
60 |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
61 t = p; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
62 p += s; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
63 n--; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
64 |
| 2197 | 65 v = memchr(t, '=', s); |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
66 if (!v) |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
67 continue; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
68 |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
69 tl = v - t; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
70 vl = s - tl - 1; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
71 v++; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
72 |
| 2197 | 73 if (tl && vl) { |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
74 char tt[tl + 1]; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
75 char ct[vl + 1]; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
76 |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
77 for (j = 0; j < tl; j++) |
| 2197 | 78 tt[j] = toupper(t[j]); |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
79 tt[tl] = 0; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
80 |
| 2197 | 81 memcpy(ct, v, vl); |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
82 ct[vl] = 0; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
83 |
| 885 | 84 // took from Vorbis_I_spec |
| 2197 | 85 if (!strcmp(tt, "AUTHOR") || !strcmp(tt, "ARTIST")) |
| 86 av_strlcpy(as->author, ct, sizeof(as->author)); | |
| 87 else if (!strcmp(tt, "TITLE")) | |
| 88 av_strlcpy(as->title, ct, sizeof(as->title)); | |
| 89 else if (!strcmp(tt, "COPYRIGHT")) | |
| 90 av_strlcpy(as->copyright, ct, sizeof(as->copyright)); | |
| 91 else if (!strcmp(tt, "DESCRIPTION")) | |
| 92 av_strlcpy(as->comment, ct, sizeof(as->comment)); | |
| 93 else if (!strcmp(tt, "GENRE")) | |
| 94 av_strlcpy(as->genre, ct, sizeof(as->genre)); | |
| 95 else if (!strcmp(tt, "TRACKNUMBER")) | |
| 96 as->track = atoi(ct); | |
| 2195 | 97 else if (!strcmp(tt, "ALBUM")) |
| 98 av_strlcpy(as->album, ct, sizeof(as->album)); | |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
99 } |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
100 } |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
101 |
| 2601 | 102 if (p != end) |
| 103 av_log(as, AV_LOG_INFO, "%ti bytes of comment header remain\n", p-end); | |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
104 if (n > 0) |
| 2197 | 105 av_log(as, AV_LOG_INFO, |
| 106 "truncated comment header, %i comments not found\n", n); | |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
107 |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
108 return 0; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
109 } |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
110 |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
111 |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
112 /** Parse the vorbis header |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
113 * Vorbis Identification header from Vorbis_I_spec.html#vorbis-spec-codec |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
114 * [vorbis_version] = read 32 bits as unsigned integer | Not used |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
115 * [audio_channels] = read 8 bit integer as unsigned | Used |
| 885 | 116 * [audio_sample_rate] = read 32 bits as unsigned integer | Used |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
117 * [bitrate_maximum] = read 32 bits as signed integer | Not used yet |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
118 * [bitrate_nominal] = read 32 bits as signed integer | Not used yet |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
119 * [bitrate_minimum] = read 32 bits as signed integer | Used as bitrate |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
120 * [blocksize_0] = read 4 bits as unsigned integer | Not Used |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
121 * [blocksize_1] = read 4 bits as unsigned integer | Not Used |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
122 * [framing_flag] = read one bit | Not Used |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
123 * */ |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
124 |
| 760 | 125 typedef struct { |
| 126 unsigned int len[3]; | |
| 127 unsigned char *packet[3]; | |
| 128 } oggvorbis_private_t; | |
| 129 | |
| 130 | |
| 131 static unsigned int | |
| 132 fixup_vorbis_headers(AVFormatContext * as, oggvorbis_private_t *priv, | |
| 2198 | 133 uint8_t **buf) |
| 760 | 134 { |
| 135 int i,offset, len; | |
| 136 unsigned char *ptr; | |
| 137 | |
| 138 len = priv->len[0] + priv->len[1] + priv->len[2]; | |
| 139 ptr = *buf = av_mallocz(len + len/255 + 64); | |
| 140 | |
| 141 ptr[0] = 2; | |
| 142 offset = 1; | |
| 143 offset += av_xiphlacing(&ptr[offset], priv->len[0]); | |
| 144 offset += av_xiphlacing(&ptr[offset], priv->len[1]); | |
| 2197 | 145 for (i = 0; i < 3; i++) { |
| 760 | 146 memcpy(&ptr[offset], priv->packet[i], priv->len[i]); |
| 147 offset += priv->len[i]; | |
| 148 } | |
| 149 *buf = av_realloc(*buf, offset); | |
| 150 return offset; | |
| 151 } | |
| 152 | |
| 153 | |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
154 static int |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
155 vorbis_header (AVFormatContext * s, int idx) |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
156 { |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
157 ogg_t *ogg = s->priv_data; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
158 ogg_stream_t *os = ogg->streams + idx; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
159 AVStream *st = s->streams[idx]; |
| 760 | 160 oggvorbis_private_t *priv; |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
161 |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
162 if (os->seq > 2) |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
163 return 0; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
164 |
| 2197 | 165 if (os->seq == 0) { |
| 760 | 166 os->private = av_mallocz(sizeof(oggvorbis_private_t)); |
| 2197 | 167 if (!os->private) |
| 760 | 168 return 0; |
| 169 } | |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
170 |
| 2595 | 171 if (os->psize < 1) |
| 172 return -1; | |
| 173 | |
| 760 | 174 priv = os->private; |
| 175 priv->len[os->seq] = os->psize; | |
| 176 priv->packet[os->seq] = av_mallocz(os->psize); | |
| 177 memcpy(priv->packet[os->seq], os->buf + os->pstart, os->psize); | |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
178 if (os->buf[os->pstart] == 1) { |
| 2996 | 179 const uint8_t *p = os->buf + os->pstart + 7; /* skip "\001vorbis" tag */ |
| 2597 | 180 unsigned blocksize, bs0, bs1; |
| 2595 | 181 |
| 182 if (os->psize != 30) | |
| 183 return -1; | |
| 184 | |
| 2597 | 185 if (bytestream_get_le32(&p) != 0) /* vorbis_version */ |
| 186 return -1; | |
| 187 | |
| 2596 | 188 st->codec->channels = bytestream_get_byte(&p); |
| 189 st->codec->sample_rate = bytestream_get_le32(&p); | |
| 190 p += 4; // skip maximum bitrate | |
| 191 st->codec->bit_rate = bytestream_get_le32(&p); // nominal bitrate | |
| 2597 | 192 p += 4; // skip minimum bitrate |
| 193 | |
| 194 blocksize = bytestream_get_byte(&p); | |
| 195 bs0 = blocksize & 15; | |
| 196 bs1 = blocksize >> 4; | |
| 197 | |
| 198 if (bs0 > bs1) | |
| 199 return -1; | |
| 200 if (bs0 < 6 || bs1 > 13) | |
| 201 return -1; | |
| 202 | |
| 203 if (bytestream_get_byte(&p) != 1) /* framing_flag */ | |
| 204 return -1; | |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
205 |
|
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
760
diff
changeset
|
206 st->codec->codec_type = CODEC_TYPE_AUDIO; |
|
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
760
diff
changeset
|
207 st->codec->codec_id = CODEC_ID_VORBIS; |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
208 |
| 1077 | 209 st->time_base.num = 1; |
| 210 st->time_base.den = st->codec->sample_rate; | |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
211 } else if (os->buf[os->pstart] == 3) { |
| 2595 | 212 if (os->psize > 8) |
| 213 vorbis_comment (s, os->buf + os->pstart + 7, os->psize - 8); | |
| 760 | 214 } else { |
|
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
760
diff
changeset
|
215 st->codec->extradata_size = |
|
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
760
diff
changeset
|
216 fixup_vorbis_headers(s, priv, &st->codec->extradata); |
|
726
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
217 } |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
218 |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
219 return os->seq < 3; |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
220 } |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
221 |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
222 ogg_codec_t vorbis_codec = { |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
223 .magic = "\001vorbis", |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
224 .magicsize = 7, |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
225 .header = vorbis_header |
|
17178af951b4
Ogg demuxer ported from tcvp by Luca Barbato <lu_zero at gentoo dot org>,
mru
parents:
diff
changeset
|
226 }; |
