diff options
Diffstat (limited to 'video/out')
-rw-r--r-- | video/out/vo.c | 5 | ||||
-rw-r--r-- | video/out/vo.h | 14 | ||||
-rw-r--r-- | video/out/vo_caca.c | 7 | ||||
-rw-r--r-- | video/out/vo_corevideo.m | 2 | ||||
-rw-r--r-- | video/out/vo_direct3d.c | 8 | ||||
-rw-r--r-- | video/out/vo_lavc.c | 4 | ||||
-rw-r--r-- | video/out/vo_null.c | 7 | ||||
-rw-r--r-- | video/out/vo_opengl.c | 26 | ||||
-rw-r--r-- | video/out/vo_opengl_old.c | 28 | ||||
-rw-r--r-- | video/out/vo_vdpau.c | 9 | ||||
-rw-r--r-- | video/out/vo_x11.c | 16 | ||||
-rw-r--r-- | video/out/vo_xv.c | 5 |
12 files changed, 12 insertions, 119 deletions
diff --git a/video/out/vo.c b/video/out/vo.c index 629bba09a6..18e000e3ab 100644 --- a/video/out/vo.c +++ b/video/out/vo.c @@ -213,11 +213,6 @@ void vo_skip_frame(struct vo *vo) vo->frame_loaded = false; } -int vo_draw_slice(struct vo *vo, uint8_t *src[], int stride[], int w, int h, int x, int y) -{ - return vo->driver->draw_slice(vo, src, stride, w, h, x, y); -} - void vo_new_frame_imminent(struct vo *vo) { if (vo->driver->buffer_frames) diff --git a/video/out/vo.h b/video/out/vo.h index 9206883183..bcc751e5f2 100644 --- a/video/out/vo.h +++ b/video/out/vo.h @@ -52,8 +52,6 @@ enum mp_voctrl { VOCTRL_GET_EQUALIZER, // struct voctrl_get_equalizer_args VOCTRL_DUPLICATE_FRAME, - VOCTRL_START_SLICE, - /* for vdpau hardware decoding */ VOCTRL_HWDEC_DECODER_RENDER, // pointer to hw state @@ -194,17 +192,6 @@ struct vo_driver { void (*get_buffered_frame)(struct vo *vo, bool eof); /* - * Draw a planar YUV slice to the buffer: - * params: - * src[3] = source image planes (Y,U,V) - * stride[3] = source image planes line widths (in bytes) - * w,h = width*height of area to be copied (in Y pixels) - * x,y = position at the destination image (in Y pixels) - */ - int (*draw_slice)(struct vo *vo, uint8_t *src[], int stride[], int w, - int h, int x, int y); - - /* * Draws OSD to the screen buffer */ void (*draw_osd)(struct vo *vo, struct osd_state *osd); @@ -302,7 +289,6 @@ int vo_draw_image(struct vo *vo, struct mp_image *mpi, double pts); int vo_redraw_frame(struct vo *vo); int vo_get_buffered_frame(struct vo *vo, bool eof); void vo_skip_frame(struct vo *vo); -int vo_draw_slice(struct vo *vo, uint8_t *src[], int stride[], int w, int h, int x, int y); void vo_new_frame_imminent(struct vo *vo); void vo_draw_osd(struct vo *vo, struct osd_state *osd); void vo_flip_page(struct vo *vo, unsigned int pts_us, int duration); diff --git a/video/out/vo_caca.c b/video/out/vo_caca.c index a8a312d01a..43d1de44cd 100644 --- a/video/out/vo_caca.c +++ b/video/out/vo_caca.c @@ -171,12 +171,6 @@ static void draw_image(struct vo *vo, mp_image_t *mpi) mpi->planes[0]); } -static int draw_slice(struct vo *vo, uint8_t *src[], int stride[], int w, int h, - int x, int y) -{ - return 0; -} - static void flip_page(struct vo *vo) { if (showosdmessage) { @@ -380,7 +374,6 @@ const struct vo_driver video_out_caca = { .config = config, .control = control, .draw_image = draw_image, - .draw_slice = draw_slice, .draw_osd = draw_osd, .flip_page = flip_page, .check_events = check_events, diff --git a/video/out/vo_corevideo.m b/video/out/vo_corevideo.m index 1ace48eb9b..bc8833f12f 100644 --- a/video/out/vo_corevideo.m +++ b/video/out/vo_corevideo.m @@ -246,7 +246,7 @@ static int query_format(struct vo *vo, uint32_t format) { struct priv *p = vo->priv; const int flags = VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | - VFCAP_OSD | VOCAP_NOSLICES; + VFCAP_OSD; switch (format) { case IMGFMT_YUY2: p->pixelFormat = kYUVSPixelFormat; diff --git a/video/out/vo_direct3d.c b/video/out/vo_direct3d.c index d71b902b54..27def5e294 100644 --- a/video/out/vo_direct3d.c +++ b/video/out/vo_direct3d.c @@ -871,8 +871,7 @@ static void uninit_d3d(d3d_priv *priv) static void d3d_upload_and_render_frame_texture(d3d_priv *priv, mp_image_t *mpi) { - if (!(mpi->flags & MP_IMGFLAG_DRAW_CALLBACK)) - draw_slice(priv->vo, mpi->planes, mpi->stride, mpi->w, mpi->h, 0, 0); + draw_slice(priv->vo, mpi->planes, mpi->stride, mpi->w, mpi->h, 0, 0); d3d_unlock_video_objects(priv); @@ -894,9 +893,6 @@ static void draw_image(struct vo *vo, mp_image_t *mpi) return; } - if (mpi->flags & MP_IMGFLAG_DRAW_CALLBACK) - goto skip_upload; - if (mpi->flags & MP_IMGFLAG_PLANAR) { /* Copy a planar frame. */ draw_slice(priv->vo, mpi->planes, mpi->stride, mpi->w, mpi->h, 0, 0); goto skip_upload; @@ -2069,7 +2065,6 @@ const struct vo_driver video_out_direct3d = { .config = config, .control = control, .draw_image = draw_image, - .draw_slice = draw_slice, .draw_osd = draw_osd, .flip_page = flip_page, .check_events = check_events, @@ -2088,7 +2083,6 @@ const struct vo_driver video_out_direct3d_shaders = { .config = config, .control = control, .draw_image = draw_image, - .draw_slice = draw_slice, .draw_osd = draw_osd, .flip_page = flip_page, .check_events = check_events, diff --git a/video/out/vo_lavc.c b/video/out/vo_lavc.c index 8134021b3f..6ae06fffec 100644 --- a/video/out/vo_lavc.c +++ b/video/out/vo_lavc.c @@ -200,10 +200,8 @@ static int query_format(struct vo *vo, uint32_t format) // we can do it VFCAP_CSP_SUPPORTED_BY_HW | // we don't convert colorspaces here - VFCAP_OSD | + VFCAP_OSD; // we have OSD - VOCAP_NOSLICES; - // we don't use slices } static void write_packet(struct vo *vo, int size, AVPacket *packet) diff --git a/video/out/vo_null.c b/video/out/vo_null.c index 67779284e0..c1e931f806 100644 --- a/video/out/vo_null.c +++ b/video/out/vo_null.c @@ -30,12 +30,6 @@ #include "video/vfcap.h" #include "video/mp_image.h" -static int draw_slice(struct vo *vo, uint8_t *image[], int stride[], - int w, int h, int x, int y) -{ - return 0; -} - static void draw_image(struct vo *vo, mp_image_t *mpi) { } @@ -96,7 +90,6 @@ const struct vo_driver video_out_null = { .config = config, .control = control, .draw_image = draw_image, - .draw_slice = draw_slice, .draw_osd = draw_osd, .flip_page = flip_page, .check_events = check_events, diff --git a/video/out/vo_opengl.c b/video/out/vo_opengl.c index 9403d7472e..759cb96ba7 100644 --- a/video/out/vo_opengl.c +++ b/video/out/vo_opengl.c @@ -1237,26 +1237,6 @@ static void flip_page(struct vo *vo) p->frames_rendered++; } -static int draw_slice(struct vo *vo, uint8_t *src[], int stride[], int w, int h, - int x, int y) -{ - struct gl_priv *p = vo->priv; - GL *gl = p->gl; - - p->mpi_flipped = stride[0] < 0; - - for (int n = 0; n < p->plane_count; n++) { - gl->ActiveTexture(GL_TEXTURE0 + n); - gl->BindTexture(GL_TEXTURE_2D, p->planes[n].gl_texture); - int xs = p->planes[n].shift_x, ys = p->planes[n].shift_y; - glUploadTex(gl, GL_TEXTURE_2D, p->gl_format, p->gl_type, src[n], - stride[n], x >> xs, y >> ys, w >> xs, h >> ys, 0); - } - gl->ActiveTexture(GL_TEXTURE0); - - return 0; -} - static uint32_t get_image(struct vo *vo, mp_image_t *mpi) { struct gl_priv *p = vo->priv; @@ -1308,8 +1288,6 @@ static void draw_image(struct vo *vo, mp_image_t *mpi) mp_image_t mpi2 = *mpi; int w = mpi->w, h = mpi->h; - if (mpi->flags & MP_IMGFLAG_DRAW_CALLBACK) - goto skip_upload; mpi2.flags = 0; mpi2.type = MP_IMGTYPE_TEMP; mpi2.width = mpi2.w; @@ -1347,7 +1325,7 @@ static void draw_image(struct vo *vo, mp_image_t *mpi) } gl->ActiveTexture(GL_TEXTURE0); gl->BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); -skip_upload: + do_render(p); } @@ -2259,7 +2237,6 @@ const struct vo_driver video_out_opengl = { .config = config, .control = control, .draw_image = draw_image, - .draw_slice = draw_slice, .draw_osd = draw_osd, .flip_page = flip_page, .check_events = check_events, @@ -2278,7 +2255,6 @@ const struct vo_driver video_out_opengl_hq = { .config = config, .control = control, .draw_image = draw_image, - .draw_slice = draw_slice, .draw_osd = draw_osd, .flip_page = flip_page, .check_events = check_events, diff --git a/video/out/vo_opengl_old.c b/video/out/vo_opengl_old.c index 0fbc038784..3f629ed43e 100644 --- a/video/out/vo_opengl_old.c +++ b/video/out/vo_opengl_old.c @@ -587,29 +587,6 @@ static void flip_page(struct vo *vo) gl->Clear(GL_COLOR_BUFFER_BIT); } -static int draw_slice(struct vo *vo, uint8_t *src[], int stride[], int w, int h, - int x, int y) -{ - struct gl_priv *p = vo->priv; - GL *gl = p->gl; - - p->mpi_flipped = stride[0] < 0; - glUploadTex(gl, p->target, p->gl_format, p->gl_type, src[0], stride[0], - x, y, w, h, p->slice_height); - if (p->is_yuv) { - int xs, ys; - mp_get_chroma_shift(p->image_format, &xs, &ys, NULL); - gl->ActiveTexture(GL_TEXTURE1); - glUploadTex(gl, p->target, p->gl_format, p->gl_type, src[1], stride[1], - x >> xs, y >> ys, w >> xs, h >> ys, p->slice_height); - gl->ActiveTexture(GL_TEXTURE2); - glUploadTex(gl, p->target, p->gl_format, p->gl_type, src[2], stride[2], - x >> xs, y >> ys, w >> xs, h >> ys, p->slice_height); - gl->ActiveTexture(GL_TEXTURE0); - } - return 0; -} - static uint32_t get_image(struct vo *vo, mp_image_t *mpi) { struct gl_priv *p = vo->priv; @@ -719,8 +696,6 @@ static void draw_image(struct vo *vo, mp_image_t *mpi) unsigned char *planes[3]; mp_image_t mpi2 = *mpi; int w = mpi->w, h = mpi->h; - if (mpi->flags & MP_IMGFLAG_DRAW_CALLBACK) - goto skip_upload; mpi2.flags = 0; mpi2.type = MP_IMGTYPE_TEMP; mpi2.width = mpi2.w; @@ -807,7 +782,7 @@ static void draw_image(struct vo *vo, mp_image_t *mpi) if (mpi->flags & MP_IMGFLAG_DIRECT) { gl->BindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); } -skip_upload: + do_render(vo); } @@ -1172,7 +1147,6 @@ const struct vo_driver video_out_opengl_old = { .config = config, .control = control, .draw_image = draw_image, - .draw_slice = draw_slice, .draw_osd = draw_osd, .flip_page = flip_page, .check_events = check_events, diff --git a/video/out/vo_vdpau.c b/video/out/vo_vdpau.c index 3d0305b799..13a352f790 100644 --- a/video/out/vo_vdpau.c +++ b/video/out/vo_vdpau.c @@ -1309,7 +1309,7 @@ static void draw_image(struct vo *vo, mp_image_t *mpi, double pts) if (IMGFMT_IS_VDPAU(vc->image_format)) { rndr = mpi->priv; reserved_mpi = mpi; - } else if (!(mpi->flags & MP_IMGFLAG_DRAW_CALLBACK)) { + } else { rndr = get_surface(vo, vc->deint_counter); vc->deint_counter = WRAP_ADD(vc->deint_counter, 1, NUM_BUFFERED_VIDEO); if (handle_preemption(vo) >= 0) { @@ -1323,11 +1323,7 @@ static void draw_image(struct vo *vo, mp_image_t *mpi, double pts) CHECK_ST_WARNING("Error when calling " "vdp_video_surface_put_bits_y_cb_cr"); } - } else - // We don't support slice callbacks so this shouldn't occur - - // I think the flags test above in pointless, but I'm adding - // this instead of removing it just in case. - abort(); + } if (mpi->fields & MP_IMGFIELD_ORDERED) vc->top_field_first = !!(mpi->fields & MP_IMGFIELD_TOP_FIRST); else @@ -1437,7 +1433,6 @@ static int query_format(struct vo *vo, uint32_t format) case IMGFMT_NV12: case IMGFMT_YUY2: case IMGFMT_UYVY: - return default_flags | VOCAP_NOSLICES; case IMGFMT_VDPAU_MPEG1: case IMGFMT_VDPAU_MPEG2: case IMGFMT_VDPAU_H264: diff --git a/video/out/vo_x11.c b/video/out/vo_x11.c index d65326616c..98ebc7f6d1 100644 --- a/video/out/vo_x11.c +++ b/video/out/vo_x11.c @@ -300,7 +300,7 @@ static int config(struct vo *vo, uint32_t width, uint32_t height, } /* set image size (which is indeed neither the input nor output size), - if zoom is on it will be changed during draw_slice anyway so we don't + if zoom is on it will be changed during draw_image anyway so we don't duplicate the aspect code here */ p->image_width = (width + 7) & (~7); @@ -474,8 +474,7 @@ static void flip_page(struct vo *vo) XSync(vo->x11->display, False); } -static int draw_slice(struct vo *vo, uint8_t *src[], int stride[], int w, int h, - int x, int y) +static void draw_image(struct vo *vo, mp_image_t *mpi) { struct priv *p = vo->priv; uint8_t *dst[MP_MAX_PLANES] = {NULL}; @@ -517,15 +516,9 @@ static int draw_slice(struct vo *vo, uint8_t *src[], int stride[], int w, int h, dst[0] += dstStride[0] * (p->image_height - 1); dstStride[0] = -dstStride[0]; } - sws_scale(p->swsContext, (const uint8_t **)src, stride, y, h, dst, - dstStride); + sws_scale(p->swsContext, (const uint8_t **)mpi->planes, mpi->stride, + 0, mpi->h, dst, dstStride); mp_draw_sub_backup_reset(p->osd_backup); - return 0; -} - -static void draw_image(struct vo *vo, mp_image_t *mpi) -{ - draw_slice(vo, mpi->planes, mpi->stride, mpi->w, mpi->h, 0, 0); } static int query_format(struct vo *vo, uint32_t format) @@ -651,7 +644,6 @@ const struct vo_driver video_out_x11 = { .config = config, .control = control, .draw_image = draw_image, - .draw_slice = draw_slice, .draw_osd = draw_osd, .flip_page = flip_page, .check_events = check_events, diff --git a/video/out/vo_xv.c b/video/out/vo_xv.c index a17fb2df13..985a528d76 100644 --- a/video/out/vo_xv.c +++ b/video/out/vo_xv.c @@ -445,9 +445,7 @@ static void draw_image(struct vo *vo, mp_image_t *mpi) { struct xvctx *ctx = vo->priv; - if (mpi->flags & MP_IMGFLAG_DRAW_CALLBACK) - ; // done - else if (mpi->flags & MP_IMGFLAG_PLANAR) + if (mpi->flags & MP_IMGFLAG_PLANAR) draw_slice(vo, mpi->planes, mpi->stride, mpi->w, mpi->h, 0, 0); else if (mpi->flags & MP_IMGFLAG_YUV) // packed YUV: @@ -694,7 +692,6 @@ const struct vo_driver video_out_xv = { .config = config, .control = control, .draw_image = draw_image, - .draw_slice = draw_slice, .draw_osd = draw_osd, .flip_page = flip_page, .check_events = check_events, |