comparison raw.c @ 6431:b36b683626e6 libavformat

move mpegvideo demuxer to its own file
author aurel
date Sun, 29 Aug 2010 20:36:23 +0000
parents d3a51b32b769
children 7ae181b3ca00
comparison
equal deleted inserted replaced
6430:d3a51b32b769 6431:b36b683626e6
235 st->codec->codec_id == CODEC_ID_H264) { 235 st->codec->codec_id == CODEC_ID_H264) {
236 st->codec->time_base= (AVRational){1,25}; 236 st->codec->time_base= (AVRational){1,25};
237 } 237 }
238 av_set_pts_info(st, 64, 1, 1200000); 238 av_set_pts_info(st, 64, 1, 1200000);
239 239
240 return 0;
241 }
242 #endif
243
244 #if CONFIG_MPEGVIDEO_DEMUXER
245 #define SEQ_START_CODE 0x000001b3
246 #define GOP_START_CODE 0x000001b8
247 #define PICTURE_START_CODE 0x00000100
248 #define SLICE_START_CODE 0x00000101
249 #define PACK_START_CODE 0x000001ba
250 #define VIDEO_ID 0x000001e0
251 #define AUDIO_ID 0x000001c0
252
253 static int mpegvideo_probe(AVProbeData *p)
254 {
255 uint32_t code= -1;
256 int pic=0, seq=0, slice=0, pspack=0, pes=0;
257 int i;
258
259 for(i=0; i<p->buf_size; i++){
260 code = (code<<8) + p->buf[i];
261 if ((code & 0xffffff00) == 0x100) {
262 switch(code){
263 case SEQ_START_CODE: seq++; break;
264 case PICTURE_START_CODE: pic++; break;
265 case SLICE_START_CODE: slice++; break;
266 case PACK_START_CODE: pspack++; break;
267 }
268 if ((code & 0x1f0) == VIDEO_ID) pes++;
269 else if((code & 0x1e0) == AUDIO_ID) pes++;
270 }
271 }
272 if(seq && seq*9<=pic*10 && pic*9<=slice*10 && !pspack && !pes)
273 return pic>1 ? AVPROBE_SCORE_MAX/2+1 : AVPROBE_SCORE_MAX/4; // +1 for .mpg
274 return 0; 240 return 0;
275 } 241 }
276 #endif 242 #endif
277 243
278 #if CONFIG_CAVSVIDEO_DEMUXER 244 #if CONFIG_CAVSVIDEO_DEMUXER
970 ff_raw_write_packet, 936 ff_raw_write_packet,
971 .flags= AVFMT_NOTIMESTAMPS, 937 .flags= AVFMT_NOTIMESTAMPS,
972 }; 938 };
973 #endif 939 #endif
974 940
975 #if CONFIG_MPEGVIDEO_DEMUXER
976 AVInputFormat mpegvideo_demuxer = {
977 "mpegvideo",
978 NULL_IF_CONFIG_SMALL("raw MPEG video"),
979 0,
980 mpegvideo_probe,
981 ff_raw_video_read_header,
982 ff_raw_read_partial_packet,
983 .flags= AVFMT_GENERIC_INDEX,
984 .value = CODEC_ID_MPEG1VIDEO,
985 };
986 #endif
987
988 #if CONFIG_CAVSVIDEO_DEMUXER 941 #if CONFIG_CAVSVIDEO_DEMUXER
989 AVInputFormat cavsvideo_demuxer = { 942 AVInputFormat cavsvideo_demuxer = {
990 "cavsvideo", 943 "cavsvideo",
991 NULL_IF_CONFIG_SMALL("raw Chinese AVS video"), 944 NULL_IF_CONFIG_SMALL("raw Chinese AVS video"),
992 0, 945 0,