|
|
|
@ -62,6 +62,8 @@ enum { |
|
|
|
|
MODE_SIZE = 1 << 7, |
|
|
|
|
MODE_RATE = 1 << 8, |
|
|
|
|
MODE_EOF = 1 << 9, |
|
|
|
|
MODE_SCIN = 1 << 10, |
|
|
|
|
MODE_SCOUT = 1 << 11, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
#define OFFSET(x) offsetof(GraphMonitorContext, x) |
|
|
|
@ -88,6 +90,8 @@ static const AVOption graphmonitor_options[] = { |
|
|
|
|
{ "size", NULL, 0, AV_OPT_TYPE_CONST, {.i64=MODE_SIZE}, 0, 0, VF, "flags" }, |
|
|
|
|
{ "rate", NULL, 0, AV_OPT_TYPE_CONST, {.i64=MODE_RATE}, 0, 0, VF, "flags" }, |
|
|
|
|
{ "eof", NULL, 0, AV_OPT_TYPE_CONST, {.i64=MODE_EOF}, 0, 0, VF, "flags" }, |
|
|
|
|
{ "sample_count_in", NULL, 0, AV_OPT_TYPE_CONST, {.i64=MODE_SCOUT}, 0, 0, VF, "flags" }, |
|
|
|
|
{ "sample_count_out", NULL, 0, AV_OPT_TYPE_CONST, {.i64=MODE_SCIN}, 0, 0, VF, "flags" }, |
|
|
|
|
{ "rate", "set video rate", OFFSET(frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT_MAX, VF }, |
|
|
|
|
{ "r", "set video rate", OFFSET(frame_rate), AV_OPT_TYPE_VIDEO_RATE, {.str = "25"}, 0, INT_MAX, VF }, |
|
|
|
|
{ NULL } |
|
|
|
@ -229,6 +233,16 @@ static void draw_items(AVFilterContext *ctx, AVFrame *out, |
|
|
|
|
drawtext(out, xpos, ypos, buffer, s->white); |
|
|
|
|
xpos += strlen(buffer) * 8; |
|
|
|
|
} |
|
|
|
|
if (s->flags & MODE_SCIN) { |
|
|
|
|
snprintf(buffer, sizeof(buffer)-1, " | sin: %"PRId64, l->sample_count_in); |
|
|
|
|
drawtext(out, xpos, ypos, buffer, s->white); |
|
|
|
|
xpos += strlen(buffer) * 8; |
|
|
|
|
} |
|
|
|
|
if (s->flags & MODE_SCOUT) { |
|
|
|
|
snprintf(buffer, sizeof(buffer)-1, " | sout: %"PRId64, l->sample_count_out); |
|
|
|
|
drawtext(out, xpos, ypos, buffer, s->white); |
|
|
|
|
xpos += strlen(buffer) * 8; |
|
|
|
|
} |
|
|
|
|
if (s->flags & MODE_PTS) { |
|
|
|
|
snprintf(buffer, sizeof(buffer)-1, " | pts: %s", av_ts2str(l->current_pts_us)); |
|
|
|
|
drawtext(out, xpos, ypos, buffer, s->white); |
|
|
|
|