comparison libmpdemux/demux_lavf.c @ 29840:efa22f9d6b76

Allow lavf demuxer to also probe and play files < 32 kB (full probe buffer size). Based on patch by On2.
author reimar
date Tue, 10 Nov 2009 16:49:00 +0000
parents fe38b68ae9f4
children 74ebb2b03d90
comparison
equal deleted inserted replaced
29839:a2a009b24502 29840:efa22f9d6b76
131 131
132 static int lavf_check_file(demuxer_t *demuxer){ 132 static int lavf_check_file(demuxer_t *demuxer){
133 AVProbeData avpd; 133 AVProbeData avpd;
134 uint8_t buf[PROBE_BUF_SIZE]; 134 uint8_t buf[PROBE_BUF_SIZE];
135 lavf_priv_t *priv; 135 lavf_priv_t *priv;
136 int probe_data_size;
136 137
137 if(!demuxer->priv) 138 if(!demuxer->priv)
138 demuxer->priv=calloc(sizeof(lavf_priv_t),1); 139 demuxer->priv=calloc(sizeof(lavf_priv_t),1);
139 priv= demuxer->priv; 140 priv= demuxer->priv;
140 141
152 } 153 }
153 mp_msg(MSGT_DEMUX,MSGL_INFO,"Forced lavf %s demuxer\n", priv->avif->long_name); 154 mp_msg(MSGT_DEMUX,MSGL_INFO,"Forced lavf %s demuxer\n", priv->avif->long_name);
154 return DEMUXER_TYPE_LAVF; 155 return DEMUXER_TYPE_LAVF;
155 } 156 }
156 157
157 if(stream_read(demuxer->stream, buf, PROBE_BUF_SIZE)!=PROBE_BUF_SIZE) 158 probe_data_size = stream_read(demuxer->stream, buf, PROBE_BUF_SIZE);
159 if(probe_data_size <= 0)
158 return 0; 160 return 0;
159 avpd.filename= demuxer->stream->url; 161 avpd.filename= demuxer->stream->url;
160 avpd.buf= buf; 162 avpd.buf= buf;
161 avpd.buf_size= PROBE_BUF_SIZE; 163 avpd.buf_size= probe_data_size;
162 164
163 priv->avif= av_probe_input_format(&avpd, 1); 165 priv->avif= av_probe_input_format(&avpd, 1);
164 if(!priv->avif){ 166 if(!priv->avif){
165 mp_msg(MSGT_HEADER,MSGL_V,"LAVF_check: no clue about this gibberish!\n"); 167 mp_msg(MSGT_HEADER,MSGL_V,"LAVF_check: no clue about this gibberish!\n");
166 return 0; 168 return 0;