Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
elphel-web-393
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Elphel
elphel-web-393
Commits
5ce190ca
Commit
5ce190ca
authored
Sep 14, 2016
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
used by camvc to take a snapshot image
parent
abc195c1
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
142 additions
and
0 deletions
+142
-0
snapfull.php
src/php_top/snapfull.php
+142
-0
No files found.
src/php_top/snapfull.php
0 → 100644
View file @
5ce190ca
#!/usr/local/sbin/php -q
<?php
/*
* !
* ! PHP script
* ! FILE NAME : snapfull.php
* ! DESCRIPTION: acquiring a single-frame with different frame size than currently used (i.e. for streaming)
* ! AUTHOR : Elphel, Inc.
* ! Copyright (C) 2008 Elphel, Inc
* ! -----------------------------------------------------------------------------**
* !
* ! This program is free software: you can redistribute it and/or modify
* ! it under the terms of the GNU General Public License as published by
* ! the Free Software Foundation, either version 3 of the License, or
* ! (at your option) any later version.
* !
* ! This program is distributed in the hope that it will be useful,
* ! but WITHOUT ANY WARRANTY; without even the implied warranty of
* ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* ! GNU General Public License for more details.
* !
* ! You should have received a copy of the GNU General Public License
* ! along with this program. If not, see <http://www.gnu.org/licenses/>.
* ! -----------------------------------------------------------------------------**
* ! $Log: snapfull.php,v $
* ! Revision 1.3 2009/10/12 19:20:24 elphel
* ! Added "Content-Disposition" support to suggest filenames to save images
* !
* ! Revision 1.2 2008/12/14 05:37:11 elphel
* ! Added turning off autoexposure+white balance during snapshot sequence
* !
* ! Revision 1.1.1.1 2008/11/27 20:04:03 elphel
* !
* !
* ! Revision 1.5 2008/11/20 01:48:39 elphel
* ! added streamer autostart
* !
* ! Revision 1.4 2008/11/17 23:42:04 elphel
* ! changed myval() to accept numbers in ""
* !
* ! Revision 1.3 2008/11/15 20:24:39 elphel
* ! added default left/top
* !
* ! Revision 1.2 2008/11/15 20:16:39 elphel
* ! removed debugging garbage
* !
* ! Revision 1.1 2008/11/15 20:10:12 elphel
* ! Added script to capture single frames of different resolution (usually full) than currently being streamed
* !
*/
$sensor_port
=
0
;
if
(
$_GET
[
'sensor_port'
]
!=
NULL
)
{
$sensor_port
=
myval
(
$_GET
[
'sensor_port'
]
);
}
$imgsrv_port
=
2323
+
$sensor_port
;
// read port from some centralized place
$imgsrv
=
'http://'
.
$_SERVER
[
'HTTP_HOST'
]
.
':'
.
strval
(
$GLOBALS
[
'imgsrv_port'
])
.
'/'
;
$suggestSave
=
false
;
$ahead
=
3
;
$delay
=
2
;
$sensorSize
=
array
(
'SENSOR_WIDTH'
=>
0
,
'SENSOR_HEIGHT'
=>
0
);
$sensorSize
=
elphel_get_P_arr
(
$sensor_port
,
$sensorSize
);
// / Use default width, height, decimation and binning if they are not specified in the HTTP GET parameters
$parsForSnap
=
array
(
'WB_EN'
=>
0
,
'AUTOEXP_ON'
=>
0
,
'WOI_WIDTH'
=>
$sensorSize
[
'SENSOR_WIDTH'
],
'WOI_HEIGHT'
=>
$sensorSize
[
'SENSOR_HEIGHT'
],
'WOI_LEFT'
=>
0
,
'WOI_TOP'
=>
0
,
'DCM_HOR'
=>
1
,
'DCM_VERT'
=>
1
,
'BIN_HOR'
=>
1
,
'BIN_VERT'
=>
1
);
foreach
(
$_GET
as
$key
=>
$value
)
switch
(
$key
)
{
case
'save'
:
$suggestSave
=
true
;
break
;
case
'ahead'
:
$ahead
=
myval
(
$value
);
break
;
case
'delay'
:
$delay
=
myval
(
$value
);
break
;
default
:
// / treat as camera native parameters
$parsForSnap
[
$key
]
=
myval
(
$value
);
}
// / Add default width, height, decimation and binning if they are not specified in the HTTP GET parameters
$parsSaved
=
elphel_get_P_arr
(
$sensor_port
,
$parsForSnap
);
$thisFrameNumber
=
elphel_get_frame
(
$sensor_port
);
if
(
$ahead
>
5
)
{
elphel_wait_frame_abs
(
$sensor_port
,
$thisFrameNumber
+
$ahead
-
5
);
$ahead
-=
5
;
$thisFrameNumber
=
elphel_get_frame
(
$sensor_port
);
}
$pgmFrameNumber
=
$thisFrameNumber
+
$ahead
;
// /set modified parameters to the camera
elphel_set_P_arr
(
$sensor_port
,
$parsForSnap
,
$pgmFrameNumber
);
// /set original parameters ($delay frames later)
elphel_wait_frame_abs
(
$sensor_port
,
$thisFrameNumber
+
$delay
);
elphel_set_P_arr
(
$sensor_port
,
$parsSaved
,
$pgmFrameNumber
+
$delay
);
// / Wait for the frame to be acquired
elphel_wait_frame_abs
(
$sensor_port
,
$pgmFrameNumber
+
2
);
// / the frame should be in circbuf by then
$circbuf_pointers
=
elphel_get_circbuf_pointers
(
$sensor_port
,
1
);
// / 1 - skip the vary oldest frame
$meta
=
end
(
$circbuf_pointers
);
if
(
!
count
(
$circbuf_pointers
)
||
(
$meta
[
'frame'
]
<
$pgmFrameNumber
))
{
echo
"compressor is turned off"
;
echo
"<pre>
\n
"
;
print_r
(
$circbuf_pointers
);
echo
"</pre>
\n
"
;
exit
(
0
);
}
// / look in the circbuf array (in case we already missed it and it is not the latest)
while
(
$meta
[
'frame'
]
>
$pgmFrameNumber
)
{
if
(
!
prev
(
$circbuf_pointers
))
{
// / failed to find the right frame in circbuf - probably overwritten
printf
(
"<pre>could not find the frame %d(0x%x) in the circbuf:
\n
"
,
$pgmFrameNumber
,
$pgmFrameNumber
);
print_r
(
$circbuf_pointers
);
echo
"
\n
</pre>"
;
exit
(
0
);
}
$meta
=
current
(
$circbuf_pointers
);
}
// / Redirect browser to the imgsrv with the frame needed. Unfortunately "reload" button in the browser will not work
if
(
$suggestSave
)
header
(
'Location: '
.
$imgsrv
.
$meta
[
'circbuf_pointer'
]
.
'/sbimg'
);
else
header
(
'Location: '
.
$imgsrv
.
$meta
[
'circbuf_pointer'
]
.
'/bimg'
);
exit
();
function
myval
(
$s
)
{
$s
=
trim
(
$s
,
"
\"
"
);
if
(
strtoupper
(
substr
(
$s
,
0
,
2
)
)
==
"0X"
)
return
intval
(
hexdec
(
$s
)
);
else
return
intval
(
$s
);
}
?>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment