summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_out/video_out_pgx64.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/video_out/video_out_pgx64.c b/src/video_out/video_out_pgx64.c
index d0fad982d..efc44b961 100644
--- a/src/video_out/video_out_pgx64.c
+++ b/src/video_out/video_out_pgx64.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out_pgx64.c,v 1.29 2003/06/15 11:44:57 komadori Exp $
+ * $Id: video_out_pgx64.c,v 1.30 2003/06/15 20:04:35 komadori Exp $
*
* video_out_pgx64.c, Sun PGX64/PGX24 output plugin for xine
*
@@ -350,13 +350,13 @@ static void pgx64_display_frame(pgx64_driver_t *this, pgx64_frame_t *frame)
if (frame->format == XINE_IMGFMT_YV12) {
if (this->deinterlace) {
- register uint8_t *y = frame->vo_frame.base[0];
- register uint8_t *ydest = this->fbbase+frame->buf_y;
- register uint8_t *u = frame->vo_frame.base[1];
- register uint8_t *v = frame->vo_frame.base[2];
- register uint8_t *udest = this->fbbase+frame->buf_u;
- register uint8_t *vdest = this->fbbase+frame->buf_v;
- int i = 0;
+ uint8_t *y = frame->vo_frame.base[0];
+ uint8_t *ydest = this->fbbase+frame->buf_y;
+ uint8_t *u = frame->vo_frame.base[1];
+ uint8_t *v = frame->vo_frame.base[2];
+ uint8_t *udest = this->fbbase+frame->buf_u;
+ uint8_t *vdest = this->fbbase+frame->buf_v;
+ int i;
for (i = 0; i < frame->height/2; i++, y += 2*frame->vo_frame.pitches[0], ydest += frame->vo_frame.pitches[0]) {
memcpy(ydest, y, frame->vo_frame.pitches[0]);
@@ -375,7 +375,18 @@ static void pgx64_display_frame(pgx64_driver_t *this, pgx64_frame_t *frame)
}
}
else {
- memcpy(this->fbbase+frame->buf_y, frame->vo_frame.base[0], frame->lengths[0]);
+ if (this->deinterlace) {
+ uint8_t *y = frame->vo_frame.base[0];
+ uint8_t *ydest = this->fbbase+frame->buf_y;
+ int i;
+
+ for (i = 0; i < frame->height/2; i++, y += 2*frame->vo_frame.pitches[0], ydest += frame->vo_frame.pitches[0]) {
+ memcpy(ydest, y, frame->vo_frame.pitches[0]);
+ }
+ }
+ else {
+ memcpy(this->fbbase+frame->buf_y, frame->vo_frame.base[0], frame->lengths[0]);
+ }
}
if ((this->current != NULL) && (this->current != frame)) {