static int ivtv_try_fmt_vid_out(struct file *file, void *fh, struct v4l2_format *fmt)
 {
        struct ivtv_open_id *id = fh;
-       struct ivtv *itv = id->itv;
        s32 w = fmt->fmt.pix.width;
        s32 h = fmt->fmt.pix.height;
        int field = fmt->fmt.pix.field;
 
        w = min(w, 720);
        w = max(w, 2);
-       h = min(h, itv->is_out_50hz ? 576 : 480);
+       /* Why can the height be 576 even when the output is NTSC?
+
+          Internally the buffers of the PVR350 are always set to 720x576. The
+          decoded video frame will always be placed in the top left corner of
+          this buffer. For any video which is not 720x576, the buffer will
+          then be cropped to remove the unused right and lower areas, with
+          the remaining image being scaled by the hardware to fit the display
+          area. The video can be scaled both up and down, so a 720x480 video
+          can be displayed full-screen on PAL and a 720x576 video can be
+          displayed without cropping on NTSC.
+
+          Note that the scaling only occurs on the video stream, the osd
+          resolution is locked to the broadcast standard and not scaled.
+
+          Thanks to Ian Armstrong for this explanation. */
+       h = min(h, 576);
        h = max(h, 2);
        if (id->type == IVTV_DEC_STREAM_TYPE_YUV)
                fmt->fmt.pix.field = field;