Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Don't Merge] Add repeat frame flag and HEVC PAK statistics for multi-passes encoding #720

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 36 additions & 1 deletion va/va.h
Original file line number Diff line number Diff line change
Expand Up @@ -2316,7 +2316,11 @@ typedef enum {
/** \brief Buffer type used for FEI input frame level parameters */
VAEncMiscParameterTypeFEIFrameControl = 18,
/** \brief encode extension buffer, ect. MPEG2 Sequence extenstion data */
VAEncMiscParameterTypeExtensionData = 19
VAEncMiscParameterTypeExtensionData = 19,
/** \brief Buffer type used for sending repeat frame flag to the encoder */
VAEncMiscParameterTypeRepeatFrame = 20,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could we reuse skip frame?

/** \brief Buffer type used for HEVC Pak statistics */
VAEncMiscParameterTypeHevcPakStat = 21
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why only hevc? what about other codes - avc, av1, etc?

} VAEncMiscParameterType;

/** \brief Packed header type. */
Expand Down Expand Up @@ -2764,6 +2768,37 @@ typedef struct _VAEncMiscParameterSkipFrame {
uint32_t va_reserved[VA_PADDING_LOW];
} VAEncMiscParameterSkipFrame;

/**
* \brief Encoding repeat frame.
*
* The application may choose to send repeated frame to the encoder for additional
* encoding pass. The encoder needs to know whether the frame is repeated frame to
* use the proper context and update the context.
*/
typedef struct _VAEncMiscParameterRepeatFrame {
/** 0 indicates it's a new frame and 1 indicates it's a repeated frame
* of previous frame. */
uint8_t repeat_frame_flag;
} VAEncMiscParameterRepeatFrame;

/**
* \brief HEVC encoding PAK CU levle stream out.
*
* The application may choose to get HEVC encoding CU level stream out from
* encoder PAK. Detail PAK CU level stream out depends on platform.
*/
typedef struct _VAEncMiscParameterHevcPakStat {
/** brief total generated CUs count
*
* it should be allocated by application. */
uint32_t *total_cus_cnt;

/** brief stream out for all CUs
*
* it should be allocated by applicaiton. */
uint8_t *cu_stream_out;
} VAEncMiscParameterHevcPakStat;

/**
* \brief Encoding region-of-interest (ROI).
*
Expand Down