Mercurial > mplayer.hg
changeset 9976:5843993013a8
fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
author | rik |
---|---|
date | Thu, 24 Apr 2003 17:17:57 +0000 |
parents | 3914afe5c0a7 |
children | 16cacec38fc7 |
files | libvo/jpeg_enc.c libvo/vo_zr.c |
diffstat | 2 files changed, 15 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/jpeg_enc.c Thu Apr 24 17:04:20 2003 +0000 +++ b/libvo/jpeg_enc.c Thu Apr 24 17:17:57 2003 +0000 @@ -297,6 +297,7 @@ if (j == NULL) return NULL; j->s = av_malloc(sizeof(MpegEncContext)); + memset(j->s,0x00,sizeof(MpegEncContext)); if (j->s == NULL) { av_free(j); return NULL; @@ -314,6 +315,7 @@ j->s->height = h; j->s->qscale = q; + j->s->mjpeg_data_only_frames = 0; j->s->out_format = FMT_MJPEG; j->s->intra_only = 1; j->s->encoding = 1;
--- a/libvo/vo_zr.c Thu Apr 24 17:04:20 2003 +0000 +++ b/libvo/vo_zr.c Thu Apr 24 17:17:57 2003 +0000 @@ -75,6 +75,7 @@ int off_y, off_c, stride; /* for use by 'draw slice/frame' */ unsigned char *buf; /* the jpeg images will be placed here */ + unsigned int buf_allocated; /* size of the block actually allocated */ jpeg_enc_t *j; unsigned char *y_data, *u_data, *v_data; /* used by the jpeg encoder */ int y_stride, u_stride, v_stride; /* these point somewhere in image */ @@ -92,13 +93,13 @@ static zr_info_t zr_info[ZR_MAX_DEVICES] = { {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, 128, NULL, 0, 0, 0, 0, 0, - 0, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + 0, NULL, 0, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, 128, NULL, 0, 0, 0, 0, 0, - 0, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + 0, NULL, 0, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, 128, NULL, 0, 0, 0, 0, 0, - 0, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + 0, NULL, 0, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, 128, NULL, 0, 0, 0, 0, 0, - 0, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; + 0, NULL, 0, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; @@ -232,6 +233,8 @@ return 1; } + /* the buffer count allocated may be different to the request */ + zr->buf_allocated = zrq.count * zrq.size; zr->buf = (unsigned char*)mmap(0, zrq.count*zrq.size, PROT_READ|PROT_WRITE, MAP_SHARED, zr->vdes, 0); @@ -239,6 +242,10 @@ mp_msg(MSGT_VO, MSGL_ERR, "zr: error requesting %d buffers of size %d\n", zrq.count, zrq.size); return 1; } + + zr->queue = 0; + zr->synco = 0; + return 0; } @@ -256,6 +263,8 @@ zr->frame = -1; if (ioctl(zr->vdes, MJPIOC_QBUF_PLAY, &zr->frame) < 0) mp_msg(MSGT_VO, MSGL_ERR, "zr: error stopping playback of last frame\n"); + if (munmap(zr->buf,zr->buf_allocated)) + mp_msg(MSGT_VO, MSGL_ERR, "zr: error unmapping buffer\n"); close(zr->vdes); }