summaryrefslogtreecommitdiff
path: root/src/cuttime.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuttime.c')
-rw-r--r--src/cuttime.c36
1 files changed, 26 insertions, 10 deletions
diff --git a/src/cuttime.c b/src/cuttime.c
index 29c8735..51b80f9 100644
--- a/src/cuttime.c
+++ b/src/cuttime.c
@@ -22,14 +22,17 @@ static void
usage(void)
{
fprintf(stderr,
- "cuttime [-adfhs] FILE\n"
+ "cuttime [-adDfhsT] FILE\n"
"\n"
"OPTIONS\n"
"\t-a\tcalculate average color of a frame\n"
- "\t-d\tcalculate difference betweenprev and next frame\n"
- "\t-f\tprint frame number\n"
+ "\t-d\tcalculate difference between prev and next frame and\n"
+ "\t\tslope of this value\n"
+ "\t-D\tprint diff and slope of diff (implies -d)\n"
+ "\t-f\tprint frame number of every frame\n"
"\t-h\tprint this help message\n"
- "\t-s\tsave frame from detected cut\n");
+ "\t-s\tsave frame from detected cut\n"
+ "\t-T\tprint timestamp of every frame\n");
exit(EXIT_FAILURE);
}
@@ -41,11 +44,12 @@ main(int argc, char **argv)
struct video_frame *frame_a = NULL, *frame_b = NULL;
int ret, ch;
int diff_flag = 0, average_flag = 0, frame_flag = 0, showcut_flag = 0;
+ int print_diff_flag = 0, time_flag = 0;
int64_t timestamp = 0;
- double diff = 0.0, old_diff = 0.0;
+ double diff = 0.0, prev_diff = 0.0, diff_slope = 0.0;
char filename[BUFSIZ];
- while ((ch = getopt(argc, argv, "adfsh")) != -1) {
+ while ((ch = getopt(argc, argv, "adDfsTh")) != -1) {
switch (ch) {
case 'a':
average_flag = 1;
@@ -53,12 +57,19 @@ main(int argc, char **argv)
case 'd':
diff_flag = 1;
break;
+ case 'D':
+ print_diff_flag = 1;
+ diff_flag = 1; /* implies -d */
+ break;
case 'f':
frame_flag = 1;
break;
case 's':
showcut_flag = 1;
break;
+ case 'T':
+ time_flag = 1;
+ break;
case 'h':
default:
usage();
@@ -87,7 +98,10 @@ main(int argc, char **argv)
if (frame_flag) /* print frame number */
printf("%d\t", i);
- if (average_flag) /* print frame average */
+ if (time_flag)
+ printf("%jd\t", frame_b->dts);
+
+ if (average_flag) /* print frame average */
printf("%f", frame_average(frame_a));
if (average_flag && diff_flag)
@@ -95,9 +109,11 @@ main(int argc, char **argv)
if (diff_flag) {
diff = frame_diff(frame_a, frame_b);
-// printf("%f", diff);
-// printf("\t%f", (diff - old_diff));
- old_diff = diff;
+ diff_slope = diff - prev_diff;
+ prev_diff = diff;
+
+ if (print_diff_flag)
+ printf("%f\t%f\t", diff, diff_slope);
}
if (diff > 40.0) {