fftools/ffmpeg_filter: remove display matrix if we have applied it
This commit is contained in:
parent
b1aaa1f585
commit
106131bb10
|
@ -143,6 +143,7 @@ typedef struct InputFilterPriv {
|
||||||
AVBufferRef *hw_frames_ctx;
|
AVBufferRef *hw_frames_ctx;
|
||||||
|
|
||||||
int displaymatrix_present;
|
int displaymatrix_present;
|
||||||
|
int displaymatrix_applied;
|
||||||
int32_t displaymatrix[9];
|
int32_t displaymatrix[9];
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
@ -1552,6 +1553,7 @@ static int configure_input_video_filter(FilterGraph *fg, AVFilterGraph *graph,
|
||||||
av_assert0(desc);
|
av_assert0(desc);
|
||||||
|
|
||||||
// TODO: insert hwaccel enabled filters like transpose_vaapi into the graph
|
// TODO: insert hwaccel enabled filters like transpose_vaapi into the graph
|
||||||
|
ifp->displaymatrix_applied = 0;
|
||||||
if ((ifp->opts.flags & IFILTER_FLAG_AUTOROTATE) &&
|
if ((ifp->opts.flags & IFILTER_FLAG_AUTOROTATE) &&
|
||||||
!(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) {
|
!(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) {
|
||||||
int32_t *displaymatrix = ifp->displaymatrix;
|
int32_t *displaymatrix = ifp->displaymatrix;
|
||||||
|
@ -1585,6 +1587,8 @@ static int configure_input_video_filter(FilterGraph *fg, AVFilterGraph *graph,
|
||||||
}
|
}
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
ifp->displaymatrix_applied = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(name, sizeof(name), "trim_in_%s", ifp->opts.name);
|
snprintf(name, sizeof(name), "trim_in_%s", ifp->opts.name);
|
||||||
|
@ -2681,6 +2685,9 @@ static int send_frame(FilterGraph *fg, FilterGraphThread *fgt,
|
||||||
frame->duration = av_rescale_q(frame->duration, frame->time_base, ifp->time_base);
|
frame->duration = av_rescale_q(frame->duration, frame->time_base, ifp->time_base);
|
||||||
frame->time_base = ifp->time_base;
|
frame->time_base = ifp->time_base;
|
||||||
|
|
||||||
|
if (ifp->displaymatrix_applied)
|
||||||
|
av_frame_remove_side_data(frame, AV_FRAME_DATA_DISPLAYMATRIX);
|
||||||
|
|
||||||
fd = frame_data(frame);
|
fd = frame_data(frame);
|
||||||
if (!fd)
|
if (!fd)
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user