Introduction
Introduction Statistics Contact Development Disclaimer Help
Fix bugs in blind-from-video - blind - suckless command-line video editing util…
git clone git://git.suckless.org/blind
Log
Files
Refs
README
LICENSE
---
commit 38e538e53941c94e4acdfccc2aa933e5f936cce1
parent b640dfad6fd5c0ae3a9bfdd9b4bd54e387b0cc51
Author: Mattias Andrée <[email protected]>
Date: Sun, 6 Aug 2017 12:46:50 +0200
Fix bugs in blind-from-video
Signed-off-by: Mattias Andrée <[email protected]>
Diffstat:
M src/blind-from-video.c | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
---
diff --git a/src/blind-from-video.c b/src/blind-from-video.c
@@ -186,7 +186,7 @@ main(int argc, char *argv[])
char *data;
const char *pixfmt = "xyza";
ssize_t headlen;
- size_t length, frame_size;
+ size_t length, frame_size, pixel_size;
int outfd, skip_length = 0;
struct stat st;
@@ -220,23 +220,27 @@ main(int argc, char *argv[])
outfile = argv[1] ? argv[1] : "-";
pixfmt = get_pixel_format(pixfmt, "xyza");
- if (!strcmp(pixfmt, "xyza"))
+ if (!strcmp(pixfmt, "xyza")) {
convert_segment = convert_segment_xyza;
- else if (!strcmp(pixfmt, "xyza f"))
+ pixel_size = 4 * sizeof(double);
+ } else if (!strcmp(pixfmt, "xyza f")) {
convert_segment = convert_segment_xyzaf;
- else if (!strcmp(pixfmt, "raw0"))
+ pixel_size = 4 * sizeof(float);
+ } else if (!strcmp(pixfmt, "raw0")) {
convert_segment = NULL;
- else
+ pixel_size = 4 * sizeof(uint16_t);
+ } else {
eprintf("pixel format %s is not supported, try xyza or raw0 an…
+ }
if (!width)
get_metadata(infile, &width, &height);
if (width > SIZE_MAX / height)
eprintf("video frame too large\n");
frame_size = width * height;
- if (4 * sizeof(double) > SIZE_MAX / frame_size)
+ if (pixel_size > SIZE_MAX / frame_size)
eprintf("video frame too large\n");
- frame_size *= 4 * sizeof(double);
+ frame_size *= pixel_size;
if (!strcmp(outfile, "-")) {
outfile = "<stdout>";
@@ -254,12 +258,17 @@ main(int argc, char *argv[])
convert(infile, outfd, outfile, width, height, frame_rate);
+ if (outfd == STDOUT_FILENO)
+ return 0;
+
if (fstat(outfd, &st))
eprintf("fstat %s:", outfile);
length = (size_t)(st.st_size);
+ if (skip_length)
+ length -= (size_t)headlen;
if (length % frame_size)
- eprintf("<subprocess>: incomplete frame");
+ eprintf("<subprocess>: incomplete frame\n");
frames = length / frame_size;
if (!skip_length) {
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.