mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-27 05:00:37 +00:00
avfilter/f_select: yuv will use Y plane only for scenecut detect
At the moment scene change detection score uses all planes to detect scene changes. In this regard this is similar how the frozen frames detection works. However, in classic encoding scene change detection typically only uses the Y plane. We might get more resonable scores for scene change if we also use only the Y plane for calculating the score if the pixel format is YUV. Although this will require additional work once packed YUV formats are added, because for the moment the generic scene sad score calculation has no way to ignore some components in a packed format. Signed-off-by: Limin Wang <lance.lmwang@gmail.com> Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
c294f38c91
commit
ad3ef00ce5
@ -209,9 +209,13 @@ static int config_input(AVFilterLink *inlink)
|
||||
{
|
||||
SelectContext *select = inlink->dst->priv;
|
||||
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
|
||||
int is_yuv = !(desc->flags & AV_PIX_FMT_FLAG_RGB) &&
|
||||
(desc->flags & AV_PIX_FMT_FLAG_PLANAR) &&
|
||||
desc->nb_components >= 3;
|
||||
|
||||
select->bitdepth = desc->comp[0].depth;
|
||||
select->nb_planes = av_pix_fmt_count_planes(inlink->format);
|
||||
select->nb_planes = is_yuv ? 1 : av_pix_fmt_count_planes(inlink->format);
|
||||
|
||||
for (int plane = 0; plane < select->nb_planes; plane++) {
|
||||
ptrdiff_t line_size = av_image_get_linesize(inlink->format, inlink->w, plane);
|
||||
int vsub = desc->log2_chroma_h;
|
||||
|
@ -1,11 +1,11 @@
|
||||
pkt_pts=1620|tag:lavfi.scene_score=1.000000
|
||||
pkt_pts=4140|tag:lavfi.scene_score=0.668643
|
||||
pkt_pts=5800|tag:lavfi.scene_score=0.996721
|
||||
pkt_pts=6720|tag:lavfi.scene_score=0.357390
|
||||
pkt_pts=8160|tag:lavfi.scene_score=0.886268
|
||||
pkt_pts=9760|tag:lavfi.scene_score=0.926219
|
||||
pkt_pts=14080|tag:lavfi.scene_score=0.650033
|
||||
pkt_pts=4140|tag:lavfi.scene_score=0.923403
|
||||
pkt_pts=5800|tag:lavfi.scene_score=1.000000
|
||||
pkt_pts=6720|tag:lavfi.scene_score=0.475643
|
||||
pkt_pts=8160|tag:lavfi.scene_score=1.000000
|
||||
pkt_pts=9760|tag:lavfi.scene_score=1.000000
|
||||
pkt_pts=14080|tag:lavfi.scene_score=0.874623
|
||||
pkt_pts=15700|tag:lavfi.scene_score=1.000000
|
||||
pkt_pts=18500|tag:lavfi.scene_score=0.316402
|
||||
pkt_pts=20040|tag:lavfi.scene_score=0.269509
|
||||
pkt_pts=18500|tag:lavfi.scene_score=0.422509
|
||||
pkt_pts=20040|tag:lavfi.scene_score=0.352360
|
||||
pkt_pts=21760|tag:lavfi.scene_score=1.000000
|
||||
|
Loading…
Reference in New Issue
Block a user