ivtv_unmute(itv);
                ivtv_release_stream(s);
        } else if (s->type >= IVTV_DEC_STREAM_TYPE_MPG) {
+               struct ivtv_stream *s_vout = &itv->streams[IVTV_DEC_STREAM_TYPE_VOUT];
+
                ivtv_stop_decoding(id, VIDEO_CMD_STOP_TO_BLACK | VIDEO_CMD_STOP_IMMEDIATELY, 0);
+
+               /* If all output streams are closed, and if the user doesn't have
+                  IVTV_DEC_STREAM_TYPE_VOUT open, then disable VBI on TV-out. */
+               if (itv->output_mode == OUT_NONE && !test_bit(IVTV_F_S_APPL_IO, &s_vout->s_flags)) {
+                       /* disable VBI on TV-out */
+                       ivtv_disable_vbi(itv);
+               }
        } else {
                ivtv_stop_capture(id, 0);
        }
 
 
        IVTV_DEBUG_INFO("Setting some initial decoder settings\n");
 
-       /* disable VBI signals, if the MPEG stream contains VBI data,
-          then that data will be processed automatically for you. */
-       ivtv_disable_vbi(itv);
-
        /* set audio mode to left/stereo  for dual/stereo mode. */
        ivtv_vapi(itv, CX2341X_DEC_SET_AUDIO_MODE, 2, itv->audio_bilingual_mode, itv->audio_stereo_mode);
 
        }
        if (ivtv_vapi(itv, CX2341X_DEC_SET_DECODER_SOURCE, 4, datatype,
                        itv->params.width, itv->params.height, itv->params.audio_properties)) {
-               IVTV_DEBUG_WARN("COULDN'T INITIALIZE DECODER SOURCE\n");
+               IVTV_DEBUG_WARN("Couldn't initialize decoder source\n");
        }
        return 0;
 }
        clear_bit(IVTV_F_S_STREAMING, &s->s_flags);
        ivtv_flush_queues(s);
 
-       if (!test_bit(IVTV_F_S_PASSTHROUGH, &s->s_flags)) {
-               /* disable VBI on TV-out */
-               ivtv_disable_vbi(itv);
-       }
-
        /* decrement decoding */
        atomic_dec(&itv->decoding);