Rename values in RefFrameType and FrameType

Replace golden and altref by past and future in RefFrameType.
So that we don't get confused with FrameType and RefFrameType.

Change-Id: I1be45d49f76c68869fc4bf53ff946fee9ce7eb9d
This commit is contained in:
angiebird
2020-02-20 17:26:14 -08:00
parent bff7ecc517
commit 0484849e8e
2 changed files with 46 additions and 28 deletions

View File

@@ -133,15 +133,15 @@ static INLINE vpx_rational_t invert_vpx_rational(vpx_rational_t v) {
static INLINE FrameType static INLINE FrameType
get_frame_type_from_update_type(FRAME_UPDATE_TYPE update_type) { get_frame_type_from_update_type(FRAME_UPDATE_TYPE update_type) {
switch (update_type) { switch (update_type) {
case KF_UPDATE: return kKeyFrame; case KF_UPDATE: return kFrameTypeKey;
case ARF_UPDATE: return kAlternateReference; case ARF_UPDATE: return kFrameTypeAltRef;
case GF_UPDATE: return kGoldenFrame; case GF_UPDATE: return kFrameTypeGolden;
case OVERLAY_UPDATE: return kOverlayFrame; case OVERLAY_UPDATE: return kFrameTypeOverlay;
case LF_UPDATE: return kInterFrame; case LF_UPDATE: return kFrameTypeInter;
default: default:
fprintf(stderr, "Unsupported update_type %d\n", update_type); fprintf(stderr, "Unsupported update_type %d\n", update_type);
abort(); abort();
return kInterFrame; return kFrameTypeInter;
} }
} }
@@ -161,19 +161,35 @@ static void update_partition_info(const PARTITION_INFO *input_partition_info,
} }
} }
// translate MV_REFERENCE_FRAME to RefFrameType
static RefFrameType mv_ref_frame_to_ref_frame_type(
MV_REFERENCE_FRAME mv_ref_frame) {
switch (mv_ref_frame) {
case LAST_FRAME: return kRefFrameTypeLast;
case GOLDEN_FRAME: return kRefFrameTypePast;
case ALTREF_FRAME: return kRefFrameTypeFuture;
default: return kRefFrameTypeNone;
}
}
static void update_motion_vector_info( static void update_motion_vector_info(
const MOTION_VECTOR_INFO *input_motion_vector_info, const int num_rows_4x4, const MOTION_VECTOR_INFO *input_motion_vector_info, const int num_rows_4x4,
const int num_cols_4x4, MotionVectorInfo *output_motion_vector_info) { const int num_cols_4x4, MotionVectorInfo *output_motion_vector_info) {
const int num_units_4x4 = num_rows_4x4 * num_cols_4x4; const int num_units_4x4 = num_rows_4x4 * num_cols_4x4;
for (int i = 0; i < num_units_4x4; ++i) { for (int i = 0; i < num_units_4x4; ++i) {
const MV_REFERENCE_FRAME *in_ref_frame =
input_motion_vector_info[i].ref_frame;
output_motion_vector_info[i].mv_count = output_motion_vector_info[i].mv_count =
(input_motion_vector_info[i].ref_frame[0] == INTRA_FRAME) (in_ref_frame[0] == INTRA_FRAME) ? 0
? 0 : ((in_ref_frame[1] == NONE) ? 1 : 2);
: ((input_motion_vector_info[i].ref_frame[1] == -1) ? 1 : 2); if (in_ref_frame[0] == NONE) {
fprintf(stderr, "in_ref_frame[0] shouldn't be NONE\n");
abort();
}
output_motion_vector_info[i].ref_frame[0] = output_motion_vector_info[i].ref_frame[0] =
static_cast<RefFrameType>(input_motion_vector_info[i].ref_frame[0]); mv_ref_frame_to_ref_frame_type(in_ref_frame[0]);
output_motion_vector_info[i].ref_frame[1] = output_motion_vector_info[i].ref_frame[1] =
static_cast<RefFrameType>(input_motion_vector_info[i].ref_frame[1]); mv_ref_frame_to_ref_frame_type(in_ref_frame[1]);
output_motion_vector_info[i].mv_row[0] = output_motion_vector_info[i].mv_row[0] =
(double)input_motion_vector_info[i].mv[0].as_mv.row / (double)input_motion_vector_info[i].mv[0].as_mv.row /
kMotionVectorPrecision; kMotionVectorPrecision;
@@ -523,12 +539,12 @@ static void SetGroupOfPicture(int first_is_key_frame, int use_alt_ref,
// frame. // frame.
EncodeFrameInfo encode_frame_info; EncodeFrameInfo encode_frame_info;
if (first_is_key_frame) { if (first_is_key_frame) {
encode_frame_info.frame_type = kKeyFrame; encode_frame_info.frame_type = kFrameTypeKey;
} else { } else {
if (last_gop_use_alt_ref) { if (last_gop_use_alt_ref) {
encode_frame_info.frame_type = kOverlayFrame; encode_frame_info.frame_type = kFrameTypeOverlay;
} else { } else {
encode_frame_info.frame_type = kGoldenFrame; encode_frame_info.frame_type = kFrameTypeGolden;
} }
} }
encode_frame_info.show_idx = first_show_idx; encode_frame_info.show_idx = first_show_idx;
@@ -541,7 +557,7 @@ static void SetGroupOfPicture(int first_is_key_frame, int use_alt_ref,
// If there is alternate reference, it is always coded at the second place. // If there is alternate reference, it is always coded at the second place.
// Its show index (or timestamp) is at the last of this group // Its show index (or timestamp) is at the last of this group
EncodeFrameInfo encode_frame_info; EncodeFrameInfo encode_frame_info;
encode_frame_info.frame_type = kAlternateReference; encode_frame_info.frame_type = kFrameTypeAltRef;
encode_frame_info.show_idx = first_show_idx + show_frame_count; encode_frame_info.show_idx = first_show_idx + show_frame_count;
encode_frame_info.coding_index = start_coding_index + 1; encode_frame_info.coding_index = start_coding_index + 1;
group_of_picture->encode_frame_list.push_back(encode_frame_info); group_of_picture->encode_frame_list.push_back(encode_frame_info);
@@ -550,7 +566,7 @@ static void SetGroupOfPicture(int first_is_key_frame, int use_alt_ref,
// Encode the rest show inter frames. // Encode the rest show inter frames.
for (int i = 1; i < show_frame_count; ++i) { for (int i = 1; i < show_frame_count; ++i) {
EncodeFrameInfo encode_frame_info; EncodeFrameInfo encode_frame_info;
encode_frame_info.frame_type = kInterFrame; encode_frame_info.frame_type = kFrameTypeInter;
encode_frame_info.show_idx = first_show_idx + i; encode_frame_info.show_idx = first_show_idx + i;
encode_frame_info.coding_index = start_coding_index + use_alt_ref + i; encode_frame_info.coding_index = start_coding_index + use_alt_ref + i;
group_of_picture->encode_frame_list.push_back(encode_frame_info); group_of_picture->encode_frame_list.push_back(encode_frame_info);

View File

@@ -19,22 +19,24 @@
namespace vp9 { namespace vp9 {
// TODO(angiebird): Add description for each frame type.
enum FrameType { enum FrameType {
kKeyFrame = 0, kFrameTypeKey = 0,
kInterFrame, kFrameTypeInter,
kAlternateReference, kFrameTypeAltRef,
kOverlayFrame, kFrameTypeOverlay,
kGoldenFrame, kFrameTypeGolden,
}; };
// The enum type is similar to vp9: |MV_REFERENCE_FRAME|. // TODO(angiebird): Add description for each reference frame type.
// TODO(angiebird): Clarify the difference between FrameType and RefFrameType. // This enum numbers have to be contiguous and start from zero except
// kNoneRefFrame.
enum RefFrameType { enum RefFrameType {
kIntraRefFrame = 0, kRefFrameTypeLast = 0,
kLastRefFrame = 1, kRefFrameTypePast = 1,
kGoldenRefFrame = 2, kRefFrameTypeFuture = 2,
kAltRefFrame = 3, kRefFrameTypeMax = 3,
kNoneRefRefFrame = -1, kRefFrameTypeNone = -1,
}; };
// The frame is split to 4x4 blocks. // The frame is split to 4x4 blocks.