Skip to content

Commit

Permalink
Add new definition for input/output surface flag
Browse files Browse the repository at this point in the history
The added bits in input_surface_flag/output_surface_flag are used to specify the sample type for scaling of interlaced content.

Signed-off-by: Chen, Jason K <[email protected]>
  • Loading branch information
Jister authored and XinfengZhang committed May 15, 2019
1 parent 87dcca0 commit 520b9e5
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 5 deletions.
10 changes: 9 additions & 1 deletion va/va.h
Original file line number Diff line number Diff line change
Expand Up @@ -214,10 +214,18 @@ typedef int VAStatus; /** Return status type from functions */
#define VA_STATUS_ERROR_NOT_ENOUGH_BUFFER 0x00000025
#define VA_STATUS_ERROR_UNKNOWN 0xFFFFFFFF

/** De-interlacing flags for vaPutSurface() */
/**
* 1. De-interlacing flags for vaPutSurface()
* 2. Surface sample type for input/output surface flag
* - Progressive: VA_FRAME_PICTURE
* - Interleaved: VA_TOP_FIELD_FIRST, VA_BOTTOM_FIELD_FIRST
* - Field: VA_TOP_FIELD, VA_BOTTOM_FIELD
*/
#define VA_FRAME_PICTURE 0x00000000
#define VA_TOP_FIELD 0x00000001
#define VA_BOTTOM_FIELD 0x00000002
#define VA_TOP_FIELD_FIRST 0x00000004
#define VA_BOTTOM_FIELD_FIRST 0x00000008

/**
* Enabled the positioning/cropping/blending feature:
Expand Down
49 changes: 45 additions & 4 deletions va/va_vpp.h
Original file line number Diff line number Diff line change
Expand Up @@ -1012,15 +1012,56 @@ typedef struct _VAProcPipelineParameterBuffer {
/**
* \brief Flag to indicate the input surface flag
*
* bit0: 0 non-protected 1: protected
* bit 1~31 for future
* bit0~3: Surface sample type
* - 0000: Progressive --> VA_FRAME_PICTURE
* - 0001: Single Top Field --> VA_TOP_FIELD
* - 0010: Single Bottom Field --> VA_BOTTOM_FIELD
* - 0100: Interleaved Top Field First --> VA_TOP_FIELD_FIRST
* - 1000: Interleaved Bottom Field First --> VA_BOTTOM_FIELD_FIRST
*
* For interlaced scaling, examples as follow:
* - 1. Interleaved to Interleaved (Suppose input is top field first)
* -- set input_surface_flag as VA_TOP_FIELD_FIRST
* -- set output_surface_flag as VA_TOP_FIELD_FIRST
* - 2. Interleaved to Field (Suppose input is top field first)
* An interleaved frame need to be passed twice.
* First cycle to get the first field:
* -- set input_surface_flag as VA_TOP_FIELD_FIRST
* -- set output_surface_flag as VA_TOP_FIELD
* Second cycle to get the second field:
* -- set input_surface_flag as VA_TOP_FIELD_FIRST
* -- set output_surface_flag as VA_BOTTOM_FIELD
* - 3. Field to Interleaved (Suppose first field is top field)
* -- create two surfaces, one for top field, the other for bottom field
* -- set surface with the first field surface id
* -- set backward_reference with the second field surface id
* -- set input_surface_flag as VA_TOP_FIELD
* -- set output_surface_flag as VA_TOP_FIELD_FIRST
* - 4. Field to Field:
* -- set flag according to each frame.
*
* bit31: Surface encryption
* - 0: non-protected
* - 1: protected
*
* bit4~30 for future
*/
uint32_t input_surface_flag;
/**
* \brief Flag to indicate the output surface flag
*
* bit0: 0 non-protected 1: protected
* bit 1~31 for future
* bit0~3: Surface sample type
* - 0000: Progressive --> VA_FRAME_PICTURE
* - 0001: Top Field --> VA_TOP_FIELD
* - 0010: Bottom Field --> VA_BOTTOM_FIELD
* - 0100: Top Field First --> VA_TOP_FIELD_FIRST
* - 1000: Bottom Field First --> VA_BOTTOM_FIELD_FIRST
*
* bit31: Surface encryption
* - 0: non-protected
* - 1: protected
*
* bit4~30 for future
*/
uint32_t output_surface_flag;
/**
Expand Down

0 comments on commit 520b9e5

Please sign in to comment.