comparison libmpdemux/demuxer.c @ 15576:82fe45e7ca77

setting sh_audio to NULL is nonsense, since it is only a local variable, use d_audio->sh instead. Fixes crash for incoming/VTS_01_1_orig.VOB, though it still doesn't select the other audio stream automatically.
author reimar
date Fri, 27 May 2005 12:38:29 +0000
parents 536e50589652
children 081bee8052cf
comparison
equal deleted inserted replaced
15575:b8cdc8b98466 15576:82fe45e7ca77
1289 } 1289 }
1290 case DEMUXER_TYPE_LMLM4: { 1290 case DEMUXER_TYPE_LMLM4: {
1291 demux_open_lmlm4(demuxer); 1291 demux_open_lmlm4(demuxer);
1292 if(!ds_fill_buffer(d_video)){ 1292 if(!ds_fill_buffer(d_video)){
1293 mp_msg(MSGT_DEMUXER,MSGL_INFO,"LMLM4: " MSGTR_MissingVideoStream); 1293 mp_msg(MSGT_DEMUXER,MSGL_INFO,"LMLM4: " MSGTR_MissingVideoStream);
1294 sh_video=NULL; 1294 d_video->sh=NULL;
1295 } else { 1295 } else {
1296 sh_video=d_video->sh;sh_video->ds=d_video; 1296 sh_video=d_video->sh;sh_video->ds=d_video;
1297 } 1297 }
1298 if(audio_id!=-2) { 1298 if(audio_id!=-2) {
1299 if(!ds_fill_buffer(d_audio)){ 1299 if(!ds_fill_buffer(d_audio)){
1300 mp_msg(MSGT_DEMUXER,MSGL_INFO,"LMLM4: " MSGTR_MissingAudioStream); 1300 mp_msg(MSGT_DEMUXER,MSGL_INFO,"LMLM4: " MSGTR_MissingAudioStream);
1301 sh_audio=NULL; 1301 d_audio->sh=NULL;
1302 } else { 1302 } else {
1303 sh_audio=d_audio->sh;sh_audio->ds=d_audio; 1303 sh_audio=d_audio->sh;sh_audio->ds=d_audio;
1304 } 1304 }
1305 } 1305 }
1306 break; 1306 break;
1317 // demuxer->idx_pos=0; 1317 // demuxer->idx_pos=0;
1318 // demuxer->endpos=avi_header.movi_end; 1318 // demuxer->endpos=avi_header.movi_end;
1319 if(d_video->id != -2) { 1319 if(d_video->id != -2) {
1320 if(!ds_fill_buffer(d_video)){ 1320 if(!ds_fill_buffer(d_video)){
1321 mp_msg(MSGT_DEMUXER,MSGL_WARN,"ASF: " MSGTR_MissingVideoStream); 1321 mp_msg(MSGT_DEMUXER,MSGL_WARN,"ASF: " MSGTR_MissingVideoStream);
1322 sh_video=NULL; 1322 d_video->sh=NULL;
1323 //printf("ASF: missing video stream!? contact the author, it may be a bug :(\n"); 1323 //printf("ASF: missing video stream!? contact the author, it may be a bug :(\n");
1324 } else { 1324 } else {
1325 sh_video=d_video->sh;sh_video->ds=d_video; 1325 sh_video=d_video->sh;sh_video->ds=d_video;
1326 sh_video->fps=1000.0f; sh_video->frametime=0.001f; // 1ms 1326 sh_video->fps=1000.0f; sh_video->frametime=0.001f; // 1ms
1327 // sh_video->i_bps=10*asf_packetsize; // FIXME! 1327 // sh_video->i_bps=10*asf_packetsize; // FIXME!
1329 } 1329 }
1330 if(d_audio->id!=-2){ 1330 if(d_audio->id!=-2){
1331 mp_msg(MSGT_DEMUXER,MSGL_V,MSGTR_ASFSearchingForAudioStream,d_audio->id); 1331 mp_msg(MSGT_DEMUXER,MSGL_V,MSGTR_ASFSearchingForAudioStream,d_audio->id);
1332 if(!ds_fill_buffer(d_audio)){ 1332 if(!ds_fill_buffer(d_audio)){
1333 mp_msg(MSGT_DEMUXER,MSGL_INFO,"ASF: " MSGTR_MissingAudioStream); 1333 mp_msg(MSGT_DEMUXER,MSGL_INFO,"ASF: " MSGTR_MissingAudioStream);
1334 sh_audio=NULL; 1334 d_audio->sh=NULL;
1335 } else { 1335 } else {
1336 sh_audio=d_audio->sh;sh_audio->ds=d_audio; 1336 sh_audio=d_audio->sh;sh_audio->ds=d_audio;
1337 sh_audio->format=sh_audio->wf->wFormatTag; 1337 sh_audio->format=sh_audio->wf->wFormatTag;
1338 } 1338 }
1339 } 1339 }
1340 break; 1340 break;
1341 } 1341 }
1342 case DEMUXER_TYPE_H264_ES: 1342 case DEMUXER_TYPE_H264_ES:
1343 case DEMUXER_TYPE_MPEG4_ES: 1343 case DEMUXER_TYPE_MPEG4_ES:
1344 case DEMUXER_TYPE_MPEG_ES: { 1344 case DEMUXER_TYPE_MPEG_ES: {
1345 sh_audio=NULL; // ES streams has no audio channel 1345 d_audio->sh=NULL; // ES streams has no audio channel
1346 d_video->sh=new_sh_video(demuxer,0); // create dummy video stream header, id=0 1346 d_video->sh=new_sh_video(demuxer,0); // create dummy video stream header, id=0
1347 sh_video=d_video->sh;sh_video->ds=d_video; 1347 sh_video=d_video->sh;sh_video->ds=d_video;
1348 break; 1348 break;
1349 } 1349 }
1350 1350
1354 // if(demuxer->stream->type!=STREAMTYPE_VCD) demuxer->movi_start=0; // for VCD 1354 // if(demuxer->stream->type!=STREAMTYPE_VCD) demuxer->movi_start=0; // for VCD
1355 1355
1356 if(audio_id!=-2) { 1356 if(audio_id!=-2) {
1357 if(!ds_fill_buffer(d_audio)){ 1357 if(!ds_fill_buffer(d_audio)){
1358 mp_msg(MSGT_DEMUXER,MSGL_INFO,"MPEG: " MSGTR_MissingAudioStream); 1358 mp_msg(MSGT_DEMUXER,MSGL_INFO,"MPEG: " MSGTR_MissingAudioStream);
1359 sh_audio=NULL; 1359 d_audio->sh=NULL;
1360 } else { 1360 } else {
1361 sh_audio=d_audio->sh;sh_audio->ds=d_audio; 1361 sh_audio=d_audio->sh;sh_audio->ds=d_audio;
1362 } 1362 }
1363 } 1363 }
1364 break; 1364 break;