Mercurial > mplayer.hg
comparison libmpdemux/demux_mkv.c @ 15154:898f68adad2b
Online audio switching now supports Matroska too. Patch by Michael Behrisch
author | gpoirier |
---|---|
date | Wed, 13 Apr 2005 22:33:19 +0000 |
parents | bbb693d3b130 |
children | 39eb8a327ea9 |
comparison
equal
deleted
inserted
replaced
15153:0f3be1ff01fb | 15154:898f68adad2b |
---|---|
3338 } | 3338 } |
3339 | 3339 |
3340 *((int *) arg) = (int) (100 * mkv_d->last_pts / mkv_d->duration); | 3340 *((int *) arg) = (int) (100 * mkv_d->last_pts / mkv_d->duration); |
3341 return DEMUXER_CTRL_OK; | 3341 return DEMUXER_CTRL_OK; |
3342 | 3342 |
3343 case DEMUXER_CTRL_SWITCH_AUDIO: | |
3344 if (demuxer->audio && demuxer->audio->sh) { | |
3345 int i; | |
3346 demux_stream_t *d_audio = demuxer->audio; | |
3347 sh_audio_t *sh_audio = d_audio->sh; | |
3348 int idx = d_audio->id - 1; // track ids are 1 based | |
3349 int num = mkv_d->num_tracks; | |
3350 mkv_track_t *otrack = mkv_d->tracks[idx]; | |
3351 for (i = 1; i < num; i++) { | |
3352 mkv_track_t *track = mkv_d->tracks[(idx+i)%num]; | |
3353 if ((track->type == MATROSKA_TRACK_AUDIO) && | |
3354 !strcmp(track->codec_id, otrack->codec_id) && | |
3355 (track->a_channels == otrack->a_channels) && | |
3356 (track->a_bps == otrack->a_bps) && | |
3357 (track->a_sfreq == otrack->a_sfreq)) { | |
3358 break; | |
3359 } | |
3360 } | |
3361 if (i < num) { | |
3362 d_audio->id = (idx+i)%num + 1; | |
3363 ds_free_packs(d_audio); | |
3364 } | |
3365 *((int *)arg)=(int)d_audio->id; | |
3366 } | |
3367 return DEMUXER_CTRL_OK; | |
3368 | |
3343 default: | 3369 default: |
3344 return DEMUXER_CTRL_NOTIMPL; | 3370 return DEMUXER_CTRL_NOTIMPL; |
3345 } | 3371 } |
3346 } | 3372 } |
3347 | 3373 |