mirror of
https://github.com/mpv-player/mpv
synced 2024-11-03 03:19:24 +01:00
Move initialization of sh_audio/sh_video members to aviheader
where possible so that all a_streams[]/v_streams[] are initialized and switching becomes simpler. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21403 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
5aa4df171d
commit
15eb8639c6
@ -195,10 +195,12 @@ while(1){
|
||||
if(h.fccType==streamtypeVIDEO){
|
||||
sh_video=new_sh_video(demuxer,stream_id);
|
||||
memcpy(&sh_video->video,&h,sizeof(h));
|
||||
sh_video->stream_delay = (float)sh_video->video.dwStart * sh_video->video.dwScale/sh_video->video.dwRate;
|
||||
} else
|
||||
if(h.fccType==streamtypeAUDIO){
|
||||
sh_audio=new_sh_audio(demuxer,stream_id);
|
||||
memcpy(&sh_audio->audio,&h,sizeof(h));
|
||||
sh_audio->stream_delay = (float)sh_audio->audio.dwStart * sh_audio->audio.dwScale/sh_audio->audio.dwRate;
|
||||
}
|
||||
last_fccType=h.fccType;
|
||||
if( mp_msg_test(MSGT_HEADER,MSGL_V) ) print_strh(&h,MSGL_V);
|
||||
@ -264,8 +266,8 @@ while(1){
|
||||
sh_video->bih->biSize=chunksize;
|
||||
if( mp_msg_test(MSGT_HEADER,MSGL_V) ) print_video_header(sh_video->bih,MSGL_V);
|
||||
chunksize=0;
|
||||
// sh_video->fps=(float)sh_video->video.dwRate/(float)sh_video->video.dwScale;
|
||||
// sh_video->frametime=(float)sh_video->video.dwScale/(float)sh_video->video.dwRate;
|
||||
sh_video->fps=(float)sh_video->video.dwRate/(float)sh_video->video.dwScale;
|
||||
sh_video->frametime=(float)sh_video->video.dwScale/(float)sh_video->video.dwRate;
|
||||
// if(demuxer->video->id==-1) demuxer->video->id=stream_id;
|
||||
// IdxFix:
|
||||
idxfix_videostream=stream_id;
|
||||
@ -316,6 +318,8 @@ while(1){
|
||||
wf_size < sizeof(WAVEFORMATEX)+sh_audio->wf->cbSize) {
|
||||
sh_audio->wf=realloc(sh_audio->wf, sizeof(WAVEFORMATEX)+sh_audio->wf->cbSize);
|
||||
}
|
||||
sh_audio->format=sh_audio->wf->wFormatTag;
|
||||
sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec;
|
||||
chunksize=0;
|
||||
if( mp_msg_test(MSGT_HEADER,MSGL_V) ) print_wave_header(sh_audio->wf,MSGL_V);
|
||||
++priv->audio_streams;
|
||||
|
@ -499,12 +499,8 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){
|
||||
d_audio->sh=sh_audio=NULL;
|
||||
} else {
|
||||
sh_audio=d_audio->sh;sh_audio->ds=d_audio;
|
||||
sh_audio->format=sh_audio->wf->wFormatTag;
|
||||
}
|
||||
}
|
||||
// calc. FPS:
|
||||
sh_video->fps=(float)sh_video->video.dwRate/(float)sh_video->video.dwScale;
|
||||
sh_video->frametime=(float)sh_video->video.dwScale/(float)sh_video->video.dwRate;
|
||||
|
||||
// calculating audio/video bitrate:
|
||||
if(priv->idx_size>0){
|
||||
@ -546,7 +542,6 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){
|
||||
if(sh_audio){
|
||||
if(sh_audio->wf->nAvgBytesPerSec && sh_audio->audio.dwSampleSize!=1){
|
||||
asize=(float)sh_audio->wf->nAvgBytesPerSec*sh_audio->audio.dwLength*sh_audio->audio.dwScale/sh_audio->audio.dwRate;
|
||||
sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec;
|
||||
} else {
|
||||
asize=sh_audio->audio.dwLength;
|
||||
sh_audio->i_bps=(float)asize/(sh_video->frametime*priv->numberofframes);
|
||||
@ -557,11 +552,6 @@ static demuxer_t* demux_open_avi(demuxer_t* demuxer){
|
||||
sh_video->i_bps=(float)vsize/(sh_video->frametime*priv->numberofframes);
|
||||
}
|
||||
|
||||
if (sh_video)
|
||||
sh_video->stream_delay = (float)sh_video->video.dwStart * sh_video->video.dwScale/sh_video->video.dwRate;
|
||||
if (sh_audio)
|
||||
sh_audio->stream_delay = (float)sh_audio->audio.dwStart * sh_audio->audio.dwScale/sh_audio->audio.dwRate;
|
||||
|
||||
return demuxer;
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user