sys->is_first_display = false;
}
+/**
+ * It updates a picture data/pitches.
+ */
+void CommonUpdatePicture(picture_t *picture,
+ uint8_t *data, unsigned pitch)
+{
+ /* fill in buffer info in first plane */
+ picture->p->p_pixels = data;
+ picture->p->i_pitch = pitch;
+ picture->p->i_lines = picture->format.i_height;
+
+ /* Fill chroma planes for planar YUV */
+ if (picture->format.i_chroma == VLC_CODEC_I420 ||
+ picture->format.i_chroma == VLC_CODEC_J420 ||
+ picture->format.i_chroma == VLC_CODEC_YV12) {
+
+ for (int n = 1; n < picture->i_planes; n++) {
+ const plane_t *o = &picture->p[n-1];
+ plane_t *p = &picture->p[n];
+
+ p->p_pixels = o->p_pixels + o->i_lines * o->i_pitch;
+ p->i_pitch = pitch / 2;
+ p->i_lines = picture->format.i_height / 2;
+ }
+ /* The dx/d3d buffer is always allocated as YV12 */
+ if (vlc_fourcc_AreUVPlanesSwapped(picture->format.i_chroma, VLC_CODEC_YV12)) {
+ uint8_t *p_tmp = picture->p[1].p_pixels;
+ picture->p[1].p_pixels = picture->p[2].p_pixels;
+ picture->p[2].p_pixels = p_tmp;
+ }
+ }
+}
+
void AlignRect(RECT *r, int align_boundary, int align_size)
{
if (align_boundary)
void CommonManage(vout_display_t *);
int CommonControl(vout_display_t *, int , va_list );
void CommonDisplay(vout_display_t *);
+void CommonUpdatePicture(picture_t *, uint8_t *, unsigned);
void UpdateRects (vout_display_t *,
const vout_display_cfg_t *,
return VLC_EGENERIC;
}
- /* fill in buffer info in first plane */
- picture->p->p_pixels = d3drect.pBits;
- picture->p->i_pitch = d3drect.Pitch;
-
- /* Fill chroma planes for planar YUV */
- if (picture->format.i_chroma == VLC_CODEC_I420 ||
- picture->format.i_chroma == VLC_CODEC_J420 ||
- picture->format.i_chroma == VLC_CODEC_YV12) {
-
- for (int n = 1; n < picture->i_planes; n++) {
- const plane_t *o = &picture->p[n-1];
- plane_t *p = &picture->p[n];
-
- p->p_pixels = o->p_pixels + o->i_lines * o->i_pitch;
- p->i_pitch = d3drect.Pitch / 2;
- }
- /* The d3d buffer is always allocated as YV12 */
- if (vlc_fourcc_AreUVPlanesSwapped(picture->format.i_chroma, VLC_CODEC_YV12)) {
- uint8_t *p_tmp = picture->p[1].p_pixels;
- picture->p[1].p_pixels = picture->p[2].p_pixels;
- picture->p[2].p_pixels = p_tmp;
- }
- }
+ CommonUpdatePicture(picture, d3drect.pBits, d3drect.Pitch);
return VLC_SUCCESS;
}
/**
picture->p_sys->surface, &ddsd))
return VLC_EGENERIC;
- /* fill in buffer info in first plane */
- picture->p->p_pixels = ddsd.lpSurface;
- picture->p->i_pitch = ddsd.lPitch;
- picture->p->i_lines = picture->format.i_height;
-
- /* Fill chroma planes for planar YUV */
- if (picture->format.i_chroma == VLC_CODEC_I420 ||
- picture->format.i_chroma == VLC_CODEC_J420 ||
- picture->format.i_chroma == VLC_CODEC_YV12) {
-
- for (int n = 1; n < picture->i_planes; n++) {
- const plane_t *o = &picture->p[n-1];
- plane_t *p = &picture->p[n];
-
- p->p_pixels = o->p_pixels + o->i_lines * o->i_pitch;
- p->i_pitch = ddsd.lPitch / 2;
- p->i_lines = picture->format.i_height / 2;
- }
- /* The dx buffer is always allocated as YV12 */
- if (vlc_fourcc_AreUVPlanesSwapped(picture->format.i_chroma, VLC_CODEC_YV12)) {
- uint8_t *p_tmp = picture->p[1].p_pixels;
- picture->p[1].p_pixels = picture->p[2].p_pixels;
- picture->p[2].p_pixels = p_tmp;
- }
- }
+ CommonUpdatePicture(picture, ddsd.lpSurface, ddsd.lPitch);
return VLC_SUCCESS;
}
static void DirectXUnlock(picture_t *picture)