# HG changeset patch # User eugeni # Date 1204305948 0 # Node ID e2f35d90ad39f7918cb69d3482661582bfbbd170 # Parent 12904c37c79874cd0c7a5522c22137d95aefd301 Set audio->sh correctly when switching audio tracks. The same for video tracks. Demuxers almost never update audio->sh or sub->sh when swithing tracks. It is especially bad when switching to no sound, and results in "too many audio packets" error. diff -r 12904c37c798 -r e2f35d90ad39 libmpdemux/demuxer.c --- a/libmpdemux/demuxer.c Fri Feb 29 17:25:47 2008 +0000 +++ b/libmpdemux/demuxer.c Fri Feb 29 17:25:48 2008 +0000 @@ -1142,6 +1142,10 @@ int res = demux_control(demuxer, DEMUXER_CTRL_SWITCH_AUDIO, &index); if (res == DEMUXER_CTRL_NOTIMPL) index = demuxer->audio->id; + if (demuxer->audio->id >= 0) + demuxer->audio->sh = demuxer->a_streams[demuxer->audio->id]; + else + demuxer->audio->sh = NULL; return index; } @@ -1149,6 +1153,10 @@ int res = demux_control(demuxer, DEMUXER_CTRL_SWITCH_VIDEO, &index); if (res == DEMUXER_CTRL_NOTIMPL) index = demuxer->video->id; + if (demuxer->video->id >= 0) + demuxer->video->sh = demuxer->v_streams[demuxer->video->id]; + else + demuxer->video->sh = NULL; return index; }