Mercurial > libavformat.hg
annotate flvdec.c @ 1388:3172bf94c066 libavformat
Use proper PRI?64 macros for %ll? format to fix printf format warnings:
utils.c:833: warning: format ¡Æ%lld¡Ç expects type ¡Ælong long int¡Ç, but argument 5 has type ¡Æint64_t¡Ç
utils.c:833: warning: format ¡Æ%lld¡Ç expects type ¡Ælong long int¡Ç, but argument 6 has type ¡Æint64_t¡Ç
utils.c:854: warning: format ¡Æ%lld¡Ç expects type ¡Ælong long int¡Ç, but argument 5 has type ¡Æint64_t¡Ç
utils.c:854: warning: format ¡Æ%lld¡Ç expects type ¡Ælong long int¡Ç, but argument 6 has type ¡Æint64_t¡Ç
asf.c:872: warning: format ¡Æ%Lx¡Ç expects type ¡Ælong long unsigned int¡Ç, but argument 4 has type ¡Æint64_t¡Ç
mov.c:1754: warning: format ¡Æ%llx¡Ç expects type ¡Ælong long unsigned int¡Ç, but argument 5 has type ¡Æint64_t¡Ç
Approved by Michael.
author | rathann |
---|---|
date | Sat, 14 Oct 2006 20:43:39 +0000 |
parents | 8aa2dc127eb8 |
children | 822f6b8a9b5e |
rev | line source |
---|---|
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
1 /* |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
2 * FLV encoder. |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
3 * Copyright (c) 2003 The FFmpeg Project. |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
4 * |
1358
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1318
diff
changeset
|
5 * This file is part of FFmpeg. |
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1318
diff
changeset
|
6 * |
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1318
diff
changeset
|
7 * FFmpeg is free software; you can redistribute it and/or |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
8 * modify it under the terms of the GNU Lesser General Public |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
9 * License as published by the Free Software Foundation; either |
1358
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1318
diff
changeset
|
10 * version 2.1 of the License, or (at your option) any later version. |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
11 * |
1358
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1318
diff
changeset
|
12 * FFmpeg is distributed in the hope that it will be useful, |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
15 * Lesser General Public License for more details. |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
16 * |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
17 * You should have received a copy of the GNU Lesser General Public |
1358
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1318
diff
changeset
|
18 * License along with FFmpeg; if not, write to the Free Software |
896
edbe5c3717f9
Update licensing information: The FSF changed postal address.
diego
parents:
887
diff
changeset
|
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
20 */ |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
21 #include "avformat.h" |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
22 |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
23 static int flv_probe(AVProbeData *p) |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
24 { |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
25 const uint8_t *d; |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
26 |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
27 if (p->buf_size < 6) |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
28 return 0; |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
29 d = p->buf; |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
30 if (d[0] == 'F' && d[1] == 'L' && d[2] == 'V') { |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
31 return 50; |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
32 } |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
33 return 0; |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
34 } |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
35 |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
36 static int flv_read_header(AVFormatContext *s, |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
37 AVFormatParameters *ap) |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
38 { |
1015 | 39 int offset, flags, size; |
885 | 40 |
378 | 41 s->ctx_flags |= AVFMTCTX_NOHEADER; //ok we have a header but theres no fps, codec type, sample_rate, ... |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
42 |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
43 url_fskip(&s->pb, 4); |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
44 flags = get_byte(&s->pb); |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
45 |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
46 offset = get_be32(&s->pb); |
1015 | 47 |
48 if(!url_is_streamed(&s->pb)){ | |
49 const int fsize= url_fsize(&s->pb); | |
50 url_fseek(&s->pb, fsize-4, SEEK_SET); | |
51 size= get_be32(&s->pb); | |
52 url_fseek(&s->pb, fsize-3-size, SEEK_SET); | |
53 if(size == get_be24(&s->pb) + 11){ | |
54 s->duration= get_be24(&s->pb) * (int64_t)AV_TIME_BASE / 1000; | |
55 } | |
56 } | |
57 | |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
58 url_fseek(&s->pb, offset, SEEK_SET); |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
59 |
1318 | 60 s->start_time = 0; |
61 | |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
62 return 0; |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
63 } |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
64 |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
65 static int flv_read_packet(AVFormatContext *s, AVPacket *pkt) |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
66 { |
1318 | 67 int ret, i, type, size, pts, flags, is_audio, next, pos; |
679 | 68 AVStream *st = NULL; |
885 | 69 |
445 | 70 for(;;){ |
1318 | 71 pos = url_ftell(&s->pb); |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
72 url_fskip(&s->pb, 4); /* size of previous packet */ |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
73 type = get_byte(&s->pb); |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
74 size = get_be24(&s->pb); |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
75 pts = get_be24(&s->pb); |
376 | 76 // av_log(s, AV_LOG_DEBUG, "type:%d, size:%d, pts:%d\n", type, size, pts); |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
77 if (url_feof(&s->pb)) |
482 | 78 return AVERROR_IO; |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
79 url_fskip(&s->pb, 4); /* reserved */ |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
80 flags = 0; |
885 | 81 |
445 | 82 if(size == 0) |
83 continue; | |
885 | 84 |
821 | 85 next= size + url_ftell(&s->pb); |
86 | |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
87 if (type == 8) { |
445 | 88 is_audio=1; |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
89 flags = get_byte(&s->pb); |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
90 } else if (type == 9) { |
445 | 91 is_audio=0; |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
92 flags = get_byte(&s->pb); |
821 | 93 } else if (type == 18 && size > 13+1+4) { |
94 url_fskip(&s->pb, 13); //onMetaData blah | |
95 if(get_byte(&s->pb) == 8){ | |
96 url_fskip(&s->pb, 4); | |
97 } | |
98 while(url_ftell(&s->pb) + 5 < next){ | |
99 char tmp[128]; | |
100 int type, len; | |
101 double d= 0; | |
885 | 102 |
821 | 103 len= get_be16(&s->pb); |
104 if(len >= sizeof(tmp) || !len) | |
105 break; | |
106 get_buffer(&s->pb, tmp, len); | |
107 tmp[len]=0; | |
885 | 108 |
821 | 109 type= get_byte(&s->pb); |
110 if(type==0){ | |
111 d= av_int2dbl(get_be64(&s->pb)); | |
112 }else if(type==2){ | |
113 len= get_be16(&s->pb); | |
114 if(len >= sizeof(tmp)) | |
115 break; | |
116 url_fskip(&s->pb, len); | |
117 }else if(type==8){ | |
118 //array | |
119 break; | |
120 }else if(type==11){ | |
121 d= av_int2dbl(get_be64(&s->pb)); | |
122 get_be16(&s->pb); | |
123 } | |
885 | 124 |
821 | 125 if(!strcmp(tmp, "duration")){ |
126 s->duration = d*AV_TIME_BASE; | |
127 }else if(!strcmp(tmp, "videodatarate")){ | |
128 }else if(!strcmp(tmp, "audiodatarate")){ | |
129 } | |
130 } | |
131 url_fseek(&s->pb, next, SEEK_SET); | |
132 continue; | |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
133 } else { |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
134 /* skip packet */ |
370
845f9de2c883
av_log() patch by (Michel Bardiaux <mbardiaux at peaktime dot be>)
michael
parents:
232
diff
changeset
|
135 av_log(s, AV_LOG_ERROR, "skipping flv packet: type %d, size %d, flags %d\n", type, size, flags); |
821 | 136 url_fseek(&s->pb, next, SEEK_SET); |
445 | 137 continue; |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
138 } |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
139 |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
140 /* now find stream */ |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
141 for(i=0;i<s->nb_streams;i++) { |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
142 st = s->streams[i]; |
445 | 143 if (st->id == is_audio) |
144 break; | |
145 } | |
146 if(i == s->nb_streams){ | |
147 st = av_new_stream(s, is_audio); | |
148 if (!st) | |
149 return AVERROR_NOMEM; | |
462
b69898ffc92a
move time_base (pts_num/pts_den) from AVFormatContext -> AVStream
michael
parents:
445
diff
changeset
|
150 |
b69898ffc92a
move time_base (pts_num/pts_den) from AVFormatContext -> AVStream
michael
parents:
445
diff
changeset
|
151 av_set_pts_info(st, 24, 1, 1000); /* 24 bit pts in ms */ |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
775
diff
changeset
|
152 st->codec->time_base= (AVRational){1,1000}; |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
153 } |
708 | 154 // av_log(NULL, AV_LOG_DEBUG, "%d %X %d \n", is_audio, flags, st->discard); |
155 if( (st->discard >= AVDISCARD_NONKEY && !((flags >> 4)==1 || is_audio)) | |
156 ||(st->discard >= AVDISCARD_BIDIR && ((flags >> 4)==3 && !is_audio)) | |
157 || st->discard >= AVDISCARD_ALL | |
158 ){ | |
821 | 159 url_fseek(&s->pb, next, SEEK_SET); |
652 | 160 continue; |
161 } | |
1318 | 162 if ((flags >> 4)==1) |
163 av_add_index_entry(st, pos, pts, size, 0, AVINDEX_KEYFRAME); | |
445 | 164 break; |
165 } | |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
166 |
445 | 167 if(is_audio){ |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
775
diff
changeset
|
168 if(st->codec->sample_rate == 0){ |
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
775
diff
changeset
|
169 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:
775
diff
changeset
|
170 st->codec->channels = (flags&1)+1; |
445 | 171 if((flags >> 4) == 5) |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
775
diff
changeset
|
172 st->codec->sample_rate= 8000; |
445 | 173 else |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
775
diff
changeset
|
174 st->codec->sample_rate = (44100<<((flags>>2)&3))>>3; |
445 | 175 switch(flags >> 4){/* 0: uncompressed 1: ADPCM 2: mp3 5: Nellymoser 8kHz mono 6: Nellymoser*/ |
887 | 176 case 0: if (flags&2) st->codec->codec_id = CODEC_ID_PCM_S16BE; |
177 else st->codec->codec_id = CODEC_ID_PCM_S8; break; | |
178 case 1: st->codec->codec_id = CODEC_ID_ADPCM_SWF; break; | |
1385
8aa2dc127eb8
flv files from myspace with mp3 audio require need_parsing because the
rtogni
parents:
1358
diff
changeset
|
179 case 2: st->codec->codec_id = CODEC_ID_MP3; st->need_parsing = 1; break; |
887 | 180 // this is not listed at FLV but at SWF, strange... |
181 case 3: if (flags&2) st->codec->codec_id = CODEC_ID_PCM_S16LE; | |
182 else st->codec->codec_id = CODEC_ID_PCM_S8; break; | |
445 | 183 default: |
887 | 184 av_log(s, AV_LOG_INFO, "Unsupported audio codec (%x)\n", flags >> 4); |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
775
diff
changeset
|
185 st->codec->codec_tag= (flags >> 4); |
445 | 186 } |
887 | 187 st->codec->bits_per_sample = (flags & 2) ? 16 : 8; |
445 | 188 } |
189 }else{ | |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
775
diff
changeset
|
190 st->codec->codec_type = CODEC_TYPE_VIDEO; |
445 | 191 switch(flags & 0xF){ |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
775
diff
changeset
|
192 case 2: st->codec->codec_id = CODEC_ID_FLV1; break; |
1101 | 193 case 3: st->codec->codec_id = CODEC_ID_FLASHSV; break; |
1305 | 194 case 4: |
195 st->codec->codec_id = CODEC_ID_VP6F; | |
196 get_byte(&s->pb); /* width and height adjustment */ | |
197 size--; | |
198 break; | |
445 | 199 default: |
887 | 200 av_log(s, AV_LOG_INFO, "Unsupported video codec (%x)\n", flags & 0xf); |
820
feca73904e67
changing AVCodecContext codec -> *codec in AVStream so additions to AVCodecContext dont randomize AVStream and break binary compatibility
michael
parents:
775
diff
changeset
|
201 st->codec->codec_tag= flags & 0xF; |
445 | 202 } |
378 | 203 } |
204 | |
821 | 205 ret= av_get_packet(&s->pb, pkt, size - 1); |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
206 if (ret <= 0) { |
482 | 207 return AVERROR_IO; |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
208 } |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
209 /* note: we need to modify the packet size here to handle the last |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
210 packet */ |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
211 pkt->size = ret; |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
212 pkt->pts = pts; |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
213 pkt->stream_index = st->index; |
885 | 214 |
708 | 215 if (is_audio || ((flags >> 4)==1)) |
887 | 216 pkt->flags |= PKT_FLAG_KEY; |
885 | 217 |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
218 return ret; |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
219 } |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
220 |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
221 static int flv_read_close(AVFormatContext *s) |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
222 { |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
223 return 0; |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
224 } |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
225 |
1318 | 226 static int flv_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags) |
227 { | |
228 AVStream *st = s->streams[stream_index]; | |
229 int index = av_index_search_timestamp(st, timestamp, flags); | |
230 if (index < 0) | |
231 return -1; | |
232 url_fseek(&s->pb, st->index_entries[index].pos, SEEK_SET); | |
233 | |
234 return 0; | |
235 } | |
236 | |
1167 | 237 AVInputFormat flv_demuxer = { |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
238 "flv", |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
239 "flv format", |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
240 0, |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
241 flv_probe, |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
242 flv_read_header, |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
243 flv_read_packet, |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
244 flv_read_close, |
1318 | 245 flv_read_seek, |
164
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
246 .extensions = "flv", |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
247 .value = CODEC_ID_FLV1, |
99fbacf0f764
flash video (flv) support patch by (Garrick Meeker <gmeeker at theoryllc dot com>)
michaelni
parents:
diff
changeset
|
248 }; |