Mercurial > mplayer.hg
comparison libmpdemux/demux_mkv.c @ 23770:4decd04037b4
Avoid crash if a non-existent audio track is selected with -aid
author | reimar |
---|---|
date | Mon, 16 Jul 2007 14:01:53 +0000 |
parents | cc06b5e849bb |
children | e6c3222f0f4a |
comparison
equal
deleted
inserted
replaced
23769:d484cdfcb8a8 | 23770:4decd04037b4 |
---|---|
2518 } | 2518 } |
2519 } | 2519 } |
2520 else if (demuxer->audio->id != -2) /* -2 = no audio at all */ | 2520 else if (demuxer->audio->id != -2) /* -2 = no audio at all */ |
2521 track = demux_mkv_find_track_by_num (mkv_d, demuxer->audio->id, | 2521 track = demux_mkv_find_track_by_num (mkv_d, demuxer->audio->id, |
2522 MATROSKA_TRACK_AUDIO); | 2522 MATROSKA_TRACK_AUDIO); |
2523 if (track && demuxer->a_streams[track->tnum]) | |
2524 { | |
2525 demuxer->audio->id = track->tnum; | |
2526 demuxer->audio->sh = demuxer->a_streams[track->tnum]; | |
2527 } | |
2523 else | 2528 else |
2524 { | 2529 { |
2525 mp_msg (MSGT_DEMUX, MSGL_INFO, MSGTR_MPDEMUX_MKV_NoAudioTrackFound); | 2530 mp_msg (MSGT_DEMUX, MSGL_INFO, MSGTR_MPDEMUX_MKV_NoAudioTrackFound); |
2526 demuxer->audio->id = -2; | 2531 demuxer->audio->id = -2; |
2527 } | 2532 } |
2532 { | 2537 { |
2533 if(mkv_d->tracks[i]->type != MATROSKA_TRACK_AUDIO) | 2538 if(mkv_d->tracks[i]->type != MATROSKA_TRACK_AUDIO) |
2534 continue; | 2539 continue; |
2535 if(demuxer->a_streams[track->tnum]) | 2540 if(demuxer->a_streams[track->tnum]) |
2536 { | 2541 { |
2537 if(track && mkv_d->tracks[i] == track) | |
2538 { | |
2539 demuxer->audio->id = track->tnum; | |
2540 demuxer->audio->sh = demuxer->a_streams[track->tnum]; | |
2541 } | |
2542 mkv_d->last_aid++; | 2542 mkv_d->last_aid++; |
2543 if(mkv_d->last_aid == MAX_A_STREAMS) | 2543 if(mkv_d->last_aid == MAX_A_STREAMS) |
2544 break; | 2544 break; |
2545 } | 2545 } |
2546 } | 2546 } |