Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
VideoLAN
x264
Commits
1b078852
Commit
1b078852
authored
Jul 25, 2008
by
Loren Merritt
Browse files
stats summary: print distribution of numbers of consecutive B-frames
parent
6a85cf34
Changes
2
Hide whitespace changes
Inline
Side-by-side
common/common.h
View file @
1b078852
...
...
@@ -557,6 +557,7 @@ struct x264_t
int
i_slice_count
[
5
];
int64_t
i_slice_size
[
5
];
double
f_slice_qp
[
5
];
int
i_consecutive_bframes
[
X264_BFRAME_MAX
+
1
];
/* */
int64_t
i_sqe_global
[
5
];
double
f_psnr_average
[
5
];
...
...
encoder/encoder.c
View file @
1b078852
...
...
@@ -1712,6 +1712,8 @@ static void x264_encoder_frame_end( x264_t *h, x264_t *thread_current,
for
(
i_list
=
0
;
i_list
<
2
;
i_list
++
)
for
(
i
=
0
;
i
<
32
;
i
++
)
h
->
stat
.
i_mb_count_ref
[
h
->
sh
.
i_type
][
i_list
][
i
]
+=
h
->
stat
.
frame
.
i_mb_count_ref
[
i_list
][
i
];
if
(
h
->
sh
.
i_type
==
SLICE_TYPE_P
)
h
->
stat
.
i_consecutive_bframes
[
h
->
fdec
->
i_frame
-
h
->
fref0
[
0
]
->
i_frame
-
1
]
++
;
if
(
h
->
sh
.
i_type
==
SLICE_TYPE_B
)
{
h
->
stat
.
i_direct_frames
[
h
->
sh
.
b_direct_spatial_mv_pred
]
++
;
...
...
@@ -1817,7 +1819,7 @@ void x264_encoder_close ( x264_t *h )
{
int64_t
i_yuv_size
=
3
*
h
->
param
.
i_width
*
h
->
param
.
i_height
/
2
;
int64_t
i_mb_count_size
[
2
][
7
]
=
{{
0
}};
char
intra
[
4
0
];
char
buf
[
20
0
];
int
i
,
j
,
i_list
,
i_type
;
int
b_print_pcm
=
h
->
stat
.
i_mb_count
[
SLICE_TYPE_I
][
I_PCM
]
||
h
->
stat
.
i_mb_count
[
SLICE_TYPE_P
][
I_PCM
]
...
...
@@ -1867,6 +1869,17 @@ void x264_encoder_close ( x264_t *h )
}
}
}
if
(
h
->
param
.
i_bframe
&&
h
->
stat
.
i_slice_count
[
SLICE_TYPE_P
]
)
{
char
*
p
=
buf
;
int
den
=
0
;
// weight by number of frames (including the P-frame) that are in a sequence of N B-frames
for
(
i
=
0
;
i
<=
h
->
param
.
i_bframe
;
i
++
)
den
+=
(
i
+
1
)
*
h
->
stat
.
i_consecutive_bframes
[
i
];
for
(
i
=
0
;
i
<=
h
->
param
.
i_bframe
;
i
++
)
p
+=
sprintf
(
p
,
" %4.1f%%"
,
100
.
*
(
i
+
1
)
*
h
->
stat
.
i_consecutive_bframes
[
i
]
/
den
);
x264_log
(
h
,
X264_LOG_INFO
,
"consecutive B-frames:%s
\n
"
,
buf
);
}
for
(
i_type
=
0
;
i_type
<
2
;
i_type
++
)
for
(
i
=
0
;
i
<
X264_PARTTYPE_MAX
;
i
++
)
...
...
@@ -1880,18 +1893,18 @@ void x264_encoder_close ( x264_t *h )
{
int64_t
*
i_mb_count
=
h
->
stat
.
i_mb_count
[
SLICE_TYPE_I
];
double
i_count
=
h
->
stat
.
i_slice_count
[
SLICE_TYPE_I
]
*
h
->
mb
.
i_mb_count
/
100
.
0
;
x264_print_intra
(
i_mb_count
,
i_count
,
b_print_pcm
,
intra
);
x264_log
(
h
,
X264_LOG_INFO
,
"mb I %s
\n
"
,
intra
);
x264_print_intra
(
i_mb_count
,
i_count
,
b_print_pcm
,
buf
);
x264_log
(
h
,
X264_LOG_INFO
,
"mb I %s
\n
"
,
buf
);
}
if
(
h
->
stat
.
i_slice_count
[
SLICE_TYPE_P
]
>
0
)
{
int64_t
*
i_mb_count
=
h
->
stat
.
i_mb_count
[
SLICE_TYPE_P
];
double
i_count
=
h
->
stat
.
i_slice_count
[
SLICE_TYPE_P
]
*
h
->
mb
.
i_mb_count
/
100
.
0
;
int64_t
*
i_mb_size
=
i_mb_count_size
[
SLICE_TYPE_P
];
x264_print_intra
(
i_mb_count
,
i_count
,
b_print_pcm
,
intra
);
x264_print_intra
(
i_mb_count
,
i_count
,
b_print_pcm
,
buf
);
x264_log
(
h
,
X264_LOG_INFO
,
"mb P %s P16..4: %4.1f%% %4.1f%% %4.1f%% %4.1f%% %4.1f%% skip:%4.1f%%
\n
"
,
intra
,
buf
,
i_mb_size
[
PIXEL_16x16
]
/
(
i_count
*
4
),
(
i_mb_size
[
PIXEL_16x8
]
+
i_mb_size
[
PIXEL_8x16
])
/
(
i_count
*
4
),
i_mb_size
[
PIXEL_8x8
]
/
(
i_count
*
4
),
...
...
@@ -1906,7 +1919,7 @@ void x264_encoder_close ( x264_t *h )
double
i_mb_list_count
;
int64_t
*
i_mb_size
=
i_mb_count_size
[
SLICE_TYPE_B
];
int64_t
list_count
[
3
]
=
{
0
};
/* 0 == L0, 1 == L1, 2 == BI */
x264_print_intra
(
i_mb_count
,
i_count
,
b_print_pcm
,
intra
);
x264_print_intra
(
i_mb_count
,
i_count
,
b_print_pcm
,
buf
);
for
(
i
=
0
;
i
<
X264_PARTTYPE_MAX
;
i
++
)
for
(
j
=
0
;
j
<
2
;
j
++
)
{
...
...
@@ -1922,7 +1935,7 @@ void x264_encoder_close ( x264_t *h )
i_mb_list_count
=
(
list_count
[
0
]
+
list_count
[
1
]
+
list_count
[
2
])
/
100
.
0
;
x264_log
(
h
,
X264_LOG_INFO
,
"mb B %s B16..8: %4.1f%% %4.1f%% %4.1f%% direct:%4.1f%% skip:%4.1f%% L0:%4.1f%% L1:%4.1f%% BI:%4.1f%%
\n
"
,
intra
,
buf
,
i_mb_size
[
PIXEL_16x16
]
/
(
i_count
*
4
),
(
i_mb_size
[
PIXEL_16x8
]
+
i_mb_size
[
PIXEL_8x16
])
/
(
i_count
*
4
),
i_mb_size
[
PIXEL_8x8
]
/
(
i_count
*
4
),
...
...
@@ -1968,7 +1981,6 @@ void x264_encoder_close ( x264_t *h )
int
i_slice
;
for
(
i_slice
=
0
;
i_slice
<
2
;
i_slice
++
)
{
char
buf
[
200
];
char
*
p
=
buf
;
int64_t
i_den
=
0
;
int
i_max
=
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment