annotate assdec.c @ 5910:536e5527c1e0 libavformat

Define AVMediaType enum, and use it instead of enum CodecType, which is deprecated and will be dropped at the next major bump.
author stefano
date Tue, 30 Mar 2010 23:30:55 +0000
parents da64b6d7a2d9
children 11bb10c37225
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3942
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
1 /*
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
2 * SSA/ASS demuxer
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
3 * Copyright (c) 2008 Michael Niedermayer
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
4 *
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
5 * This file is part of FFmpeg.
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
6 *
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
9 * License as published by the Free Software Foundation; either
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
11 *
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
15 * Lesser General Public License for more details.
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
16 *
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
20 */
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
21
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
22 #include "avformat.h"
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
23
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
24 #define MAX_LINESIZE 2000
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
25
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
26 typedef struct ASSContext{
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
27 uint8_t *event_buffer;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
28 uint8_t **event;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
29 unsigned int event_count;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
30 unsigned int event_index;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
31 }ASSContext;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
32
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
33 static void get_line(ByteIOContext *s, char *buf, int maxlen)
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
34 {
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
35 int i = 0;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
36 char c;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
37
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
38 do{
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
39 c = get_byte(s);
3950
45684dea4c9b assdec: don't remove CR, they are part of the spec
aurel
parents: 3943
diff changeset
40 if (i < maxlen-1)
3942
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
41 buf[i++] = c;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
42 }while(c != '\n' && c);
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
43
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
44 buf[i] = 0;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
45 }
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
46
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
47 static int probe(AVProbeData *p)
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
48 {
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
49 const char *header= "[Script Info]";
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
50
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
51 if( !memcmp(p->buf , header, strlen(header))
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
52 || !memcmp(p->buf+3, header, strlen(header)))
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
53 return AVPROBE_SCORE_MAX;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
54
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
55 return 0;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
56 }
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
57
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
58 static int read_close(AVFormatContext *s)
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
59 {
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
60 ASSContext *ass = s->priv_data;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
61
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
62 av_freep(&ass->event_buffer);
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
63 av_freep(&ass->event);
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
64
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
65 return 0;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
66 }
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
67
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
68 static int64_t get_pts(const uint8_t *p)
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
69 {
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
70 int hour, min, sec, hsec;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
71
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
72 if(sscanf(p, "%*[^,],%d:%d:%d%*c%d", &hour, &min, &sec, &hsec) != 4)
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
73 return AV_NOPTS_VALUE;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
74
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
75 // av_log(NULL, AV_LOG_ERROR, "%d %d %d %d %d [%s]\n", i, hour, min, sec, hsec, p);
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
76
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
77 min+= 60*hour;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
78 sec+= 60*min;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
79
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
80 return sec*100+hsec;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
81 }
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
82
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
83 static int event_cmp(uint8_t **a, uint8_t **b)
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
84 {
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
85 return get_pts(*a) - get_pts(*b);
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
86 }
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
87
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
88 static int read_header(AVFormatContext *s, AVFormatParameters *ap)
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
89 {
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
90 int i, header_remaining;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
91 ASSContext *ass = s->priv_data;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
92 ByteIOContext *pb = s->pb;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
93 AVStream *st;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
94 int allocated[2]={0};
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
95 uint8_t *p, **dst[2]={0};
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
96 int pos[2]={0};
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
97
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
98 st = av_new_stream(s, 0);
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
99 if (!st)
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
100 return -1;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
101 av_set_pts_info(st, 64, 1, 100);
5910
536e5527c1e0 Define AVMediaType enum, and use it instead of enum CodecType, which
stefano
parents: 4484
diff changeset
102 st->codec->codec_type = AVMEDIA_TYPE_SUBTITLE;
3942
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
103 st->codec->codec_id= CODEC_ID_SSA;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
104
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
105 header_remaining= INT_MAX;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
106 dst[0] = &st->codec->extradata;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
107 dst[1] = &ass->event_buffer;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
108 while(!url_feof(pb)){
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
109 uint8_t line[MAX_LINESIZE];
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
110
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
111 get_line(pb, line, sizeof(line));
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
112
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
113 if(!memcmp(line, "[Events]", 8))
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
114 header_remaining= 2;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
115 else if(line[0]=='[')
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
116 header_remaining= INT_MAX;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
117
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
118 i= header_remaining==0;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
119
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
120 if(i && get_pts(line) == AV_NOPTS_VALUE)
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
121 continue;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
122
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
123 p = av_fast_realloc(*(dst[i]), &allocated[i], pos[i]+MAX_LINESIZE);
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
124 if(!p)
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
125 goto fail;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
126 *(dst[i])= p;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
127 memcpy(p + pos[i], line, strlen(line)+1);
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
128 pos[i] += strlen(line);
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
129 if(i) ass->event_count++;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
130 else header_remaining--;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
131 }
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
132 st->codec->extradata_size= pos[0];
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
133
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
134 if(ass->event_count >= UINT_MAX / sizeof(*ass->event))
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
135 goto fail;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
136
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
137 ass->event= av_malloc(ass->event_count * sizeof(*ass->event));
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
138 p= ass->event_buffer;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
139 for(i=0; i<ass->event_count; i++){
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
140 ass->event[i]= p;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
141 while(*p && *p != '\n')
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
142 p++;
3943
b250956a6f68 Do not lose the '\n'.
michael
parents: 3942
diff changeset
143 p++;
3942
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
144 }
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
145
4484
da64b6d7a2d9 Silence "assdec.c:146: warning: passing argument 4 of ¡Æqsort¡Ç from incompatible pointer type"
michael
parents: 3950
diff changeset
146 qsort(ass->event, ass->event_count, sizeof(*ass->event), (void*)event_cmp);
3942
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
147
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
148 return 0;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
149
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
150 fail:
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
151 read_close(s);
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
152
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
153 return -1;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
154 }
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
155
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
156 static int read_packet(AVFormatContext *s, AVPacket *pkt)
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
157 {
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
158 ASSContext *ass = s->priv_data;
3943
b250956a6f68 Do not lose the '\n'.
michael
parents: 3942
diff changeset
159 uint8_t *p, *end;
3942
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
160
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
161 if(ass->event_index >= ass->event_count)
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
162 return AVERROR(EIO);
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
163
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
164 p= ass->event[ ass->event_index ];
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
165
3943
b250956a6f68 Do not lose the '\n'.
michael
parents: 3942
diff changeset
166 end= strchr(p, '\n');
b250956a6f68 Do not lose the '\n'.
michael
parents: 3942
diff changeset
167 av_new_packet(pkt, end ? end-p+1 : strlen(p));
3942
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
168 pkt->flags |= PKT_FLAG_KEY;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
169 pkt->pos= p - ass->event_buffer + s->streams[0]->codec->extradata_size;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
170 pkt->pts= pkt->dts= get_pts(p);
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
171 memcpy(pkt->data, p, pkt->size);
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
172
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
173 ass->event_index++;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
174
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
175 return 0;
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
176 }
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
177
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
178 AVInputFormat ass_demuxer = {
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
179 "ass",
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
180 NULL_IF_CONFIG_SMALL("SSA/ASS format"),
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
181 sizeof(ASSContext),
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
182 probe,
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
183 read_header,
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
184 read_packet,
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
185 read_close,
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
186 // read_seek,
ffb410d82ad3 2 in 1, an ASS and SSA demuxer.
michael
parents:
diff changeset
187 };