bool VAApiWriter::processParams( bool * ) { zoom = getParam( "Zoom" ).toDouble(); deinterlace = getParam( "Deinterlace" ).toInt(); aspect_ratio = getParam( "AspectRatio" ).toDouble(); const int _Hue = getParam( "Hue" ).toInt(); const int _Saturation = getParam( "Saturation" ).toInt(); const int _Brightness = getParam( "Brightness" ).toInt(); const int _Contrast = getParam( "Contrast" ).toInt(); if ( _Hue != Hue || _Saturation != Saturation || _Brightness != Brightness || _Contrast != Contrast ) { Hue = _Hue; Saturation = _Saturation; Brightness = _Brightness; Contrast = _Contrast; int num_attribs = vaMaxNumDisplayAttributes( VADisp ); VADisplayAttribute attribs[ num_attribs ]; if ( !vaQueryDisplayAttributes( VADisp, attribs, &num_attribs ) ) { for ( int i = 0 ; i < num_attribs ; ++i ) { switch ( attribs[ i ].type ) { case VADisplayAttribHue: attribs[ i ].value = Functions::scaleEQValue( Hue, attribs[ i ].min_value, attribs[ i ].max_value ); break; case VADisplayAttribSaturation: attribs[ i ].value = Functions::scaleEQValue( Saturation, attribs[ i ].min_value, attribs[ i ].max_value ); break; case VADisplayAttribBrightness: attribs[ i ].value = Functions::scaleEQValue( Brightness, attribs[ i ].min_value, attribs[ i ].max_value ); break; case VADisplayAttribContrast: attribs[ i ].value = Functions::scaleEQValue( Contrast, attribs[ i ].min_value, attribs[ i ].max_value ); break; default: break; } } vaSetDisplayAttributes( VADisp, attribs, num_attribs ); } } if ( !isVisible() ) QMPlay2Core.dockVideo( this ); else { resizeEvent( NULL ); if ( paused ) draw(); } return readyWrite(); }
void VAAPIContext::InitPictureAttributes(VideoColourSpace &colourspace) { if (!m_display) return; if (!m_display->m_va_disp) return; delete [] m_pictureAttributes; m_pictureAttributeCount = 0; int supported_controls = kPictureAttributeSupported_None; QList<VADisplayAttribute> supported; int num = vaMaxNumDisplayAttributes(m_display->m_va_disp); VADisplayAttribute* attribs = new VADisplayAttribute[num]; int actual = 0; INIT_ST; va_status = vaQueryDisplayAttributes(m_display->m_va_disp, attribs, &actual); CHECK_ST; for (int i = 0; i < actual; i++) { int type = attribs[i].type; if ((attribs[i].flags & VA_DISPLAY_ATTRIB_SETTABLE) && (type == VADisplayAttribBrightness || type == VADisplayAttribContrast || type == VADisplayAttribHue || type == VADisplayAttribSaturation)) { supported.push_back(attribs[i]); if (type == VADisplayAttribBrightness) supported_controls += kPictureAttributeSupported_Brightness; if (type == VADisplayAttribHue) supported_controls += kPictureAttributeSupported_Hue; if (type == VADisplayAttribContrast) supported_controls += kPictureAttributeSupported_Contrast; if (type == VADisplayAttribSaturation) supported_controls += kPictureAttributeSupported_Colour; } } colourspace.SetSupportedAttributes((PictureAttributeSupported)supported_controls); delete [] attribs; if (supported.isEmpty()) return; m_pictureAttributeCount = supported.size(); m_pictureAttributes = new VADisplayAttribute[m_pictureAttributeCount]; for (int i = 0; i < m_pictureAttributeCount; i++) m_pictureAttributes[i] = supported.at(i); if (supported_controls & kPictureAttributeSupported_Brightness) SetPictureAttribute(kPictureAttribute_Brightness, colourspace.GetPictureAttribute(kPictureAttribute_Brightness)); if (supported_controls & kPictureAttributeSupported_Hue) SetPictureAttribute(kPictureAttribute_Hue, colourspace.GetPictureAttribute(kPictureAttribute_Hue)); if (supported_controls & kPictureAttributeSupported_Contrast) SetPictureAttribute(kPictureAttribute_Contrast, colourspace.GetPictureAttribute(kPictureAttribute_Contrast)); if (supported_controls & kPictureAttributeSupported_Colour) SetPictureAttribute(kPictureAttribute_Colour, colourspace.GetPictureAttribute(kPictureAttribute_Colour)); }
int vaapi_init(VADisplay display) { #if 0 CommonContext * common = common_get_context(); #endif VAAPIContext *vaapi; int major_version, minor_version; int i, num_display_attrs, max_display_attrs; VADisplayAttribute *display_attrs; VAStatus status; if (vaapi_context) return 0; if (!display) return -1; D(bug("VA display %p\n", display)); status = vaInitialize(display, &major_version, &minor_version); if (!vaapi_check_status(status, "vaInitialize()")) return -1; D(bug("VA API version %d.%d\n", major_version, minor_version)); max_display_attrs = vaMaxNumDisplayAttributes(display); display_attrs = malloc(max_display_attrs * sizeof(display_attrs[0])); if (!display_attrs) return -1; num_display_attrs = 0; /* XXX: workaround old GMA500 bug */ status = vaQueryDisplayAttributes(display, display_attrs, &num_display_attrs); if (!vaapi_check_status(status, "vaQueryDisplayAttributes()")) { free(display_attrs); return -1; } D(bug("%d display attributes available\n", num_display_attrs)); for (i = 0; i < num_display_attrs; i++) { VADisplayAttribute * const display_attr = &display_attrs[i]; D(bug(" %-32s (%s/%s) min %d max %d value 0x%x\n", string_of_VADisplayAttribType(display_attr->type), (display_attr->flags & VA_DISPLAY_ATTRIB_GETTABLE) ? "get" : "---", (display_attr->flags & VA_DISPLAY_ATTRIB_SETTABLE) ? "set" : "---", display_attr->min_value, display_attr->max_value, display_attr->value)); } free(display_attrs); #if 0 if (common->use_vaapi_background_color) { VADisplayAttribute attr; attr.type = VADisplayAttribBackgroundColor; attr.value = common->vaapi_background_color; status = vaSetDisplayAttributes(display, &attr, 1); if (!vaapi_check_status(status, "vaSetDisplayAttributes()")) return -1; } #endif if ((vaapi = calloc(1, sizeof(*vaapi))) == NULL) return -1; vaapi->display = display; vaapi->subpic_image.image_id = VA_INVALID_ID; for (i = 0; i < ARRAY_ELEMS(vaapi->subpic_ids); i++) vaapi->subpic_ids[i] = VA_INVALID_ID; vaapi_context = vaapi; return 0; }