Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions camera_i2c
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

# http://elinux.org/RPi_HardwareHistory#Board_Revision_History
rev=`cat /proc/cpuinfo | grep Revision | awk '{print substr($NF,length($NF)-5,6)}'`
r=`uname -r | head --bytes 1`
echo "setting GPIO for board revsion: $rev"

case $rev in
Expand Down Expand Up @@ -93,6 +94,9 @@ raspi-gpio set 2 dh

'a02082'|'a22082'|'a020d3'|'9020e0'|'a03111'|'b03111'|'c03111'|'a03112'|'b03112'|'c03112')
echo "Raspberry Pi3B / Pi3B+ / 3A / 4B(1G/2G/4G)"
if [ "$r" = "4" ]
then
i2c=0
# https://www.raspberrypi.org/forums/viewtopic.php?f=38&t=120702&start=100
# Pins 44&45 Alt1=i2c0, alt2=i2c1
# i2c0 can be on pins 0 and 1, so make sure they are not set to alt0
Expand All @@ -106,15 +110,23 @@ raspi-gpio set 44 a1
raspi-gpio set 45 ip
raspi-gpio set 45 a1
#shutdown
else
i2c=10
fi
# you need this one: https://github.com/6by9/rpi3-gpiovirtbuf
#raspi-gpio set 41 1
./rpi3-gpiovirtbuf s 133 1
`dirname $0`/rpi3-gpiovirtbuf s 133 1
#LED
#raspi-gpio set 32 1
i2cdetect -y 0
i2cdetect -y $i2c
;;

*)
echo "Failed: don't know how to set GPIO for this board!"
;;
esac

if [ "$r" = "5" ]
then
echo "Use 'raspiraw -y 10' to communicate with the sensor"
fi
28 changes: 22 additions & 6 deletions imx477_modes.h
Original file line number Diff line number Diff line change
Expand Up @@ -830,6 +830,22 @@ struct mode_def imx477_modes[] = {
.term = {0, 0},
.black_level = 256,
},
{
.regs = imx477_2028x1080_regs,
.num_regs = NUM_ELEMENTS(imx477_2028x1080_regs),
.width = 2028,
.height = 1080,
.encoding = 0,
.order = BAYER_ORDER_RGGB,
.native_bit_depth = 12,
.image_id = 0x2C,
.data_lanes = 2,
.min_vts = 1134,
.line_time_ns = 0x31c4,
.timing = {0, 0, 0, 0, 0},
.term = {0, 0},
.black_level = 256,
},
{
.regs = imx477_2028x1520_regs,
.num_regs = NUM_ELEMENTS(imx477_2028x1520_regs),
Expand All @@ -847,17 +863,17 @@ struct mode_def imx477_modes[] = {
.black_level = 256,
},
{
.regs = imx477_2028x1080_regs,
.num_regs = NUM_ELEMENTS(imx477_2028x1080_regs),
.width = 2028,
.height = 1080,
.regs = imx477_4056x3040_regs,
.num_regs = NUM_ELEMENTS(imx477_4056x3040_regs),
.width = 4056,
.height = 3040,
.encoding = 0,
.order = BAYER_ORDER_RGGB,
.native_bit_depth = 12,
.image_id = 0x2C,
.data_lanes = 2,
.min_vts = 1134,
.line_time_ns = 0x31c4,
.min_vts = 3072,
.line_time_ns = 0x5dc0,
.timing = {0, 0, 0, 0, 0},
.term = {0, 0},
.black_level = 256,
Expand Down
39 changes: 39 additions & 0 deletions tools/1012x760
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/bin/bash

if [ "$1" = "" ]; then echo "format: `basename $0` ms"; exit; fi

r=`uname -r | head --bytes 1`
if [ "$r" = "4" ]; then i2c=0; else i2c=10; fi

echo "removing /dev/shm/out.*.raw"
rm -f /dev/shm/out.*.raw

if [ "$2" = "" ]; then fps=195; else fps=$2; fi
echo "capturing frames for ${1}ms with ${fps}fps requested"
raspiraw -md 4 -y $i2c -vf -hf -t $1 -ts tstamps.dirty -hd0 hd0.32k -sr 1 -o /dev/shm/out.%04d.raw 2>/dev/null >/dev/null

grep -v ",0$" tstamps.dirty | grep -v ",-[0-9]*$" > tstamps.csv

us=`cut -f1 -d, tstamps.csv | sort -n | uniq -c | sort -n | tail -1 | cut -b9-`
l=`wc --lines tstamps.csv | cut -f1 -d\ `
echo -e "$l frames were captured\nmajority framerate $((1000000 / $us))fps"

echo "frame delta time[us] distribution"
cut -f1 -d, tstamps.csv | sort -n | uniq -c

D=`echo "0123456789" | sed "s/\`echo $((1000000/$fps)) | cut -b1\`//"`

echo "after skip frame indices (middle column)"
grep "^[$D]" tstamps.csv | sed "s/^/> /"

skips=`grep "^[$D]" tstamps.csv | wc --lines | cut -f1 -d\ `
stamps=`wc --lines tstamps.csv | cut -f1 -d\ `
per=`expr \( 100 \* $skips \) / \( $skips + $stamps \)`
echo "$per% frame skips"

fst=`head -1 tstamps.csv | cut -f3 -d,`
lst=`tail -1 tstamps.csv | cut -f3 -d,`
dif=`expr $lst - $fst`
dif2=`expr $dif / 2`
avg=`expr \( 1000000 \* \( $l - 1 \) + $dif2 \) / $dif`
echo "average framerate ${avg}fps"
39 changes: 39 additions & 0 deletions tools/2028x1080
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/bin/bash

if [ "$1" = "" ]; then echo "format: `basename $0` ms"; exit; fi

r=`uname -r | head --bytes 1`
if [ "$r" = "4" ]; then i2c=0; else i2c=10; fi

echo "removing /dev/shm/out.*.raw"
rm -f /dev/shm/out.*.raw

if [ "$2" = "" ]; then fps=57; else fps=$2; fi
echo "capturing frames for ${1}ms with ${fps}fps requested"
raspiraw -md 1 -y $i2c -vf -hf -t $1 -ts tstamps.dirty -hd0 hd0.32k -sr 1 -o /dev/shm/out.%04d.raw 2>/dev/null >/dev/null

grep -v ",0$" tstamps.dirty | grep -v ",-[0-9]*$" > tstamps.csv

us=`cut -f1 -d, tstamps.csv | sort -n | uniq -c | sort -n | tail -1 | cut -b9-`
l=`wc --lines tstamps.csv | cut -f1 -d\ `
echo -e "$l frames were captured\nmajority framerate $((1000000 / $us))fps"

echo "frame delta time[us] distribution"
cut -f1 -d, tstamps.csv | sort -n | uniq -c

D=`echo "0123456789" | sed "s/\`echo $((1000000/$fps)) | cut -b1\`//"`

echo "after skip frame indices (middle column)"
grep "^[$D]" tstamps.csv | sed "s/^/> /"

skips=`grep "^[$D]" tstamps.csv | wc --lines | cut -f1 -d\ `
stamps=`wc --lines tstamps.csv | cut -f1 -d\ `
per=`expr \( 100 \* $skips \) / \( $skips + $stamps \)`
echo "$per% frame skips"

fst=`head -1 tstamps.csv | cut -f3 -d,`
lst=`tail -1 tstamps.csv | cut -f3 -d,`
dif=`expr $lst - $fst`
dif2=`expr $dif / 2`
avg=`expr \( 1000000 \* \( $l - 1 \) + $dif2 \) / $dif`
echo "average framerate ${avg}fps"
39 changes: 39 additions & 0 deletions tools/2028x1520
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/bin/bash

if [ "$1" = "" ]; then echo "format: `basename $0` ms"; exit; fi

r=`uname -r | head --bytes 1`
if [ "$r" = "4" ]; then i2c=0; else i2c=10; fi

echo "removing /dev/shm/out.*.raw"
rm -f /dev/shm/out.*.raw

if [ "$2" = "" ]; then fps=41; else fps=$2; fi
echo "capturing frames for ${1}ms with ${fps}fps requested"
raspiraw -md 2 -y $i2c -vf -hf -t $1 -ts tstamps.dirty -hd0 hd0.32k -sr 1 -o /dev/shm/out.%04d.raw 2>/dev/null >/dev/null

grep -v ",0$" tstamps.dirty | grep -v ",-[0-9]*$" > tstamps.csv

us=`cut -f1 -d, tstamps.csv | sort -n | uniq -c | sort -n | tail -1 | cut -b9-`
l=`wc --lines tstamps.csv | cut -f1 -d\ `
echo -e "$l frames were captured\nmajority framerate $((1000000 / $us))fps"

echo "frame delta time[us] distribution"
cut -f1 -d, tstamps.csv | sort -n | uniq -c

D=`echo "0123456789" | sed "s/\`echo $((1000000/$fps)) | cut -b1\`//"`

echo "after skip frame indices (middle column)"
grep "^[$D]" tstamps.csv | sed "s/^/> /"

skips=`grep "^[$D]" tstamps.csv | wc --lines | cut -f1 -d\ `
stamps=`wc --lines tstamps.csv | cut -f1 -d\ `
per=`expr \( 100 \* $skips \) / \( $skips + $stamps \)`
echo "$per% frame skips"

fst=`head -1 tstamps.csv | cut -f3 -d,`
lst=`tail -1 tstamps.csv | cut -f3 -d,`
dif=`expr $lst - $fst`
dif2=`expr $dif / 2`
avg=`expr \( 1000000 \* \( $l - 1 \) + $dif2 \) / $dif`
echo "average framerate ${avg}fps"
39 changes: 39 additions & 0 deletions tools/4056x3040
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/bin/bash

if [ "$1" = "" ]; then echo "format: `basename $0` ms"; exit; fi

r=`uname -r | head --bytes 1`
if [ "$r" = "4" ]; then i2c=0; else i2c=10; fi

echo "removing /dev/shm/out.*.raw"
rm -f /dev/shm/out.*.raw

if [ "$2" = "" ]; then fps=11; else fps=$2; fi
echo "capturing frames for ${1}ms with ${fps}fps requested"
raspiraw -md 3 -y $i2c -vf -hf -t $1 -ts tstamps.dirty -hd0 hd0.32k -sr 1 -o /dev/shm/out.%04d.raw 2>/dev/null >/dev/null

grep -v ",0$" tstamps.dirty | grep -v ",-[0-9]*$" > tstamps.csv

us=`cut -f1 -d, tstamps.csv | sort -n | uniq -c | sort -n | tail -1 | cut -b9-`
l=`wc --lines tstamps.csv | cut -f1 -d\ `
echo -e "$l frames were captured\nmajority framerate $((1000000 / $us))fps"

echo "frame delta time[us] distribution"
cut -f1 -d, tstamps.csv | sort -n | uniq -c

D=`echo "0123456789" | sed "s/\`echo $((1000000/$fps)) | cut -b1\`//"`

echo "after skip frame indices (middle column)"
grep "^[$D]" tstamps.csv | sed "s/^/> /"

skips=`grep "^[$D]" tstamps.csv | wc --lines | cut -f1 -d\ `
stamps=`wc --lines tstamps.csv | cut -f1 -d\ `
per=`expr \( 100 \* $skips \) / \( $skips + $stamps \)`
echo "$per% frame skips"

fst=`head -1 tstamps.csv | cut -f3 -d,`
lst=`tail -1 tstamps.csv | cut -f3 -d,`
dif=`expr $lst - $fst`
dif2=`expr $dif / 2`
avg=`expr \( 1000000 \* \( $l - 1 \) + $dif2 \) / $dif`
echo "average framerate ${avg}fps"
3 changes: 2 additions & 1 deletion tools/gifenc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
palette="/tmp/palette.png"

#filters="fps=15,scale=320:-1:flags=lanczos"
filters="fps=25,scale=640:-1:flags=lanczos"
#filters="fps=25,scale=640:-1:flags=lanczos"
filters="fps=25,scale=1012:-1:flags=lanczos"

ffmpeg -v warning -i $1 -vf "$filters,palettegen" -y $palette
ffmpeg -v warning -i $1 -i $palette -lavfi "$filters [x]; [x][1:v] paletteuse" -y $2