Hi, Jonathan,
    I am very exciting about your VPP interface proposals!  we are longing for 
it for quite a long time.  
    I have two questions about AProcFilterType VPP definition:
      1). What's the meaning of "VAProcFilterDering"?
      2). As to " VAProcFilterColorEnhancement" filter, In my opinion, it is a 
generalized conception, many kinds of enhancement can be covered, such as:
               a) Spacial domain enhance: pixel enhance, local area enhance...
           b) Frequency domain enhance: high frequency filter, low frequency 
filter.
       Will we specify more detail information about this filter type in future?

Thanks,
Xiaowei

-----Original Message-----
From: libva-bounces+xiaowei.a.li=intel....@lists.freedesktop.org 
[mailto:libva-bounces+xiaowei.a.li=intel....@lists.freedesktop.org] On Behalf 
Of Bian, Jonathan
Sent: Tuesday, August 02, 2011 2:14 AM
To: libva@lists.freedesktop.org
Subject: [Libva] [RFC] VA API extension proposals to support encode and 
post-processing

Hi,

Attached are API extension proposals from Intel to support additional profiles 
for H.264 encode and video post-processing. The main changes/additions from the 
existing APIs are described below and comments/feedbacks are appreciated to 
help with finalizing the API extensions.

Regards,
Jonathan Bian

1. Added new entrypoint for video post-processing 2. Added a number of 
configuration attributes to accommodate differing capabilities in hardware 
encoders.
3. Added "Ext" buffer types to extend encode parameters buffers without 
impacting compatibility with existing encode data structures 4. Added new 
buffer types for packed header to be sent by the app, and various buffers 
required for video post-processing 5. Added "Ext" version of sequence, picture 
and slice parameter buffer structures for H.264 to support High Profile 
encoding.
6. Added new functions and data structures to support video post-processing 
(see va_vpp.h).

With this proposal, video post-processing is modeled as a pipeline of connected 
and configurable processing filters. The existing 
vaBeginPicture/vaRenderPicture/vaEndPicture semantics is used to perform video 
post-processing frame by frame, with configuration parameters passed through 
vaRenderPicture as buffers. For optimal performance, the assumption is made 
that the implementation will retain the parameter settings affecting the 
processing pipeline until the application makes explicit modifications of these 
parameters.  Following is some pseudo code to demonstrate the usage of the 
video post-processing APIs:

  // find out if post-processing entrypoint is available
  va_status = vaQueryConfigEntrypoints(va_dpy, 
                                        VAProfileNone,
                                        va_entrypoints,
                                        &entrypointsCount);

  if(VAEntrypointVideoProc == va_entrypoints[entrypointsIndx])

  va_status = vaCreateConfig(va_dpy, 
                            VAProfileNone, 
                            VAEntrypointVideoProc,
                            &va_attributes,
                            1,
                            &va_config);

  // create context for post-processing
  va_status = vaCreateContext(va_dpy,...)

  // query pipeline level capabilities
  va_status = vaQueryVideoProcPipelineCap(caps) // for ex: Denoise (DN), DI, 
sharpening (SHRP), procamp are supported by driver

  // query individual filter capabilities, e.g. parameter value range
  va_status = vaQueryVideoProcFilterCap(dn, caps_dn);
  Va_status = vaQueryVideoProcFilterCap(procamp, caps_procamp);

  While( is_new_input )
  {
    vaBeginPicture(out);

    // setup pipeline parameter (VAProcPipelineParameterBuffer)
    vaRenderPicture(pipeline_param);

    // query reference frame requirements for this pipeline
    vaQueryVideoProcReferenceFrameCap(&forward_ref, &backward_ref);

    // set up input parameter (VAProcInputParameterBuffer)
    vaRenderPicture(input_param); 

    // set up denoise parameters (VAProcFilterBaseParameterBuffer)
    vaRenderPicture(dn_param);

    // set up procamp parameters (VAProcFilterProcAmpParameterBuffer)
    vaRenderPicture(procamp_param);

    vaEndPicture();

    // find out whether processing has completed at some later time
    vaQueryStatus();
}

_______________________________________________
Libva mailing list
Libva@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libva

Reply via email to