comparison libmpdemux/demux_lavf.c @ 15011:83077e6742e7

various (de)muxer_lavf fixes
author michael
date Fri, 25 Mar 2005 22:47:09 +0000
parents c03962274c4b
children e9865b828a89
comparison
equal deleted inserted replaced
15010:aec21cf429cb 15011:83077e6742e7
45 }lavf_priv_t; 45 }lavf_priv_t;
46 46
47 extern void print_wave_header(WAVEFORMATEX *h); 47 extern void print_wave_header(WAVEFORMATEX *h);
48 extern void print_video_header(BITMAPINFOHEADER *h); 48 extern void print_video_header(BITMAPINFOHEADER *h);
49 49
50 int64_t ff_gcd(int64_t a, int64_t b);
51
50 static int mp_open(URLContext *h, const char *filename, int flags){ 52 static int mp_open(URLContext *h, const char *filename, int flags){
51 return 0; 53 return 0;
52 } 54 }
53 55
54 static int mp_read(URLContext *h, unsigned char *buf, int size){ 56 static int mp_read(URLContext *h, unsigned char *buf, int size){
127 129
128 int demux_open_lavf(demuxer_t *demuxer){ 130 int demux_open_lavf(demuxer_t *demuxer){
129 AVFormatContext *avfc; 131 AVFormatContext *avfc;
130 AVFormatParameters ap; 132 AVFormatParameters ap;
131 lavf_priv_t *priv= demuxer->priv; 133 lavf_priv_t *priv= demuxer->priv;
132 int i; 134 int i,g;
133 char mp_filename[256]="mp:"; 135 char mp_filename[256]="mp:";
134 136
135 memset(&ap, 0, sizeof(AVFormatParameters)); 137 memset(&ap, 0, sizeof(AVFormatParameters));
136 138
137 stream_seek(demuxer->stream, 0); 139 stream_seek(demuxer->stream, 0);
191 wf + 1, 193 wf + 1,
192 codec->extradata, 194 codec->extradata,
193 codec->extradata_size); 195 codec->extradata_size);
194 } 196 }
195 sh_audio->wf= wf; 197 sh_audio->wf= wf;
198 sh_audio->audio.dwSampleSize= codec->block_align;
199 if(codec->frame_size && codec->sample_rate){
200 sh_audio->audio.dwScale=codec->frame_size;
201 sh_audio->audio.dwRate= codec->sample_rate;
202 }else{
203 sh_audio->audio.dwScale= codec->block_align ? codec->block_align*8 : 8;
204 sh_audio->audio.dwRate = codec->bit_rate;
205 }
206 g= ff_gcd(sh_audio->audio.dwScale, sh_audio->audio.dwRate);
207 sh_audio->audio.dwScale /= g;
208 sh_audio->audio.dwRate /= g;
209 // printf("sca:%d rat:%d fs:%d sr:%d ba:%d\n", sh_audio->audio.dwScale, sh_audio->audio.dwRate, codec->frame_size, codec->sample_rate, codec->block_align);
196 sh_audio->ds= demuxer->audio; 210 sh_audio->ds= demuxer->audio;
197 sh_audio->format= codec->codec_tag; 211 sh_audio->format= codec->codec_tag;
198 sh_audio->channels= codec->channels; 212 sh_audio->channels= codec->channels;
199 sh_audio->samplerate= codec->sample_rate; 213 sh_audio->samplerate= codec->sample_rate;
200 sh_audio->i_bps= codec->bit_rate/8; 214 sh_audio->i_bps= codec->bit_rate/8;