mirror of https://github.com/mpv-player/mpv
fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9977 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
0f929103ed
commit
1e27fe3e81
|
@ -297,6 +297,7 @@ jpeg_enc_t *jpeg_enc_init(int w, int h, int y_psize, int y_rsize,
|
|||
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 @@ jpeg_enc_t *jpeg_enc_init(int w, int h, int y_psize, int y_rsize,
|
|||
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;
|
||||
|
|
|
@ -75,6 +75,7 @@ typedef struct {
|
|||
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 @@ typedef struct {
|
|||
|
||||
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 @@ int init_zoran(zr_info_t *zr, int stretchx, int stretchy) {
|
|||
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 @@ int init_zoran(zr_info_t *zr, int stretchx, int stretchy) {
|
|||
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 @@ void uninit_zoran(zr_info_t *zr) {
|
|||
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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue