- psz_chroma = config_GetPsz( p_vout, "vmem-chroma" );
- if( psz_chroma )
- {
- if( strlen( psz_chroma ) < 4 )
- {
- msg_Err( p_vout, "vmem-chroma should be 4 characters long" );
+ sys->lock = var_InheritAddress(vd, "vmem-lock");
+ if (sys->lock == NULL) {
+ msg_Err(vd, "missing lock callback");
+ free(sys);
+ return VLC_EGENERIC;
+ }
+ sys->unlock = var_InheritAddress(vd, "vmem-unlock");
+ sys->display = var_InheritAddress(vd, "vmem-display");
+ sys->cleanup = var_InheritAddress(vd, "vmem-cleanup");
+ sys->opaque = var_InheritAddress(vd, "vmem-data");
+ sys->pool = NULL;
+
+ /* Define the video format */
+ video_format_t fmt;
+ video_format_ApplyRotation(&fmt, &vd->fmt);
+
+ if (setup != NULL) {
+ char chroma[5];
+
+ memcpy(chroma, &fmt.i_chroma, 4);
+ chroma[4] = '\0';
+ memset(sys->pitches, 0, sizeof(sys->pitches));
+ memset(sys->lines, 0, sizeof(sys->lines));
+
+ sys->count = setup(&sys->opaque, chroma, &fmt.i_width, &fmt.i_height,
+ sys->pitches, sys->lines);
+ if (sys->count == 0) {
+ msg_Err(vd, "video format setup failure (no pictures)");
+ free(sys);