Add movie.subframe_to_frame
This commit is contained in:
parent
5e73a844a9
commit
6d1a67719b
5 changed files with 74 additions and 0 deletions
|
@ -1243,6 +1243,10 @@ public:
|
|||
* Find subframe number corresponding to given frame (1-based).
|
||||
*/
|
||||
int64_t find_frame(uint64_t n);
|
||||
/**
|
||||
* Find frame number corresponding to given subframe (0-based).
|
||||
*/
|
||||
int64_t subframe_to_frame(uint64_t n);
|
||||
/**
|
||||
* Notify sync flag polarity change.
|
||||
*
|
||||
|
|
19
lua.lyx
19
lua.lyx
|
@ -6704,6 +6704,25 @@ Returns starting subframe of given frame (frame numbers are 1-based).
|
|||
Returns -1 if frame number is bad.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Subsection
|
||||
movie.subframe_to_frame/INPUTMOVIE::subframe_to_frame: Find frame corresponding
|
||||
to subframe
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
Syntax: number movie.subframe_to_frame([INPUTMOVIE/string movie], number
|
||||
subframe)
|
||||
\end_layout
|
||||
|
||||
\begin_layout Itemize
|
||||
Syntax: number INPUTMOVIE::subframe_to_frame(number subframe)
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
Returns frame containing given subframe (subframe numbers are 0-based).
|
||||
Returns -1 if subframe number is bad.
|
||||
\end_layout
|
||||
|
||||
\begin_layout Subsection
|
||||
movie.blank_frame/INPUTMOVIE::blank_frame: Return a blank frame
|
||||
\end_layout
|
||||
|
|
BIN
lua.pdf
BIN
lua.pdf
Binary file not shown.
|
@ -819,6 +819,35 @@ int64_t frame_vector::find_frame(uint64_t n)
|
|||
return -1;
|
||||
}
|
||||
|
||||
int64_t frame_vector::subframe_to_frame(uint64_t n)
|
||||
{
|
||||
int64_t ret = 1;
|
||||
uint64_t stride = get_stride();
|
||||
uint64_t pageframes = get_frames_per_page();
|
||||
uint64_t vsize = size();
|
||||
if(n >= vsize) return -1;
|
||||
size_t pagenum = 0;
|
||||
size_t cpage = n / pageframes;
|
||||
for(uint64_t p = 0; p < cpage; p++) {
|
||||
const unsigned char* content = get_page_buffer(pagenum++);
|
||||
size_t offset = 0;
|
||||
for(unsigned i = 0; i < pageframes; i++) {
|
||||
if(frame::sync(content + offset)) ret++;
|
||||
offset += stride;
|
||||
}
|
||||
}
|
||||
{
|
||||
const unsigned char* content = get_page_buffer(pagenum++);
|
||||
size_t offset = 0;
|
||||
unsigned idx = n % pageframes;
|
||||
for(unsigned i = 0; i < idx; i++) {
|
||||
if(frame::sync(content + offset)) ret++;
|
||||
offset += stride;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
frame::frame() throw()
|
||||
{
|
||||
memset(memory, 0, sizeof(memory));
|
||||
|
|
|
@ -226,6 +226,17 @@ namespace
|
|||
return 1;
|
||||
}
|
||||
|
||||
int _subframe_to_frame(lua::state& L, lua::parameters& P)
|
||||
{
|
||||
uint64_t n;
|
||||
portctrl::frame_vector& v = framevector(L, P);
|
||||
|
||||
P(n);
|
||||
|
||||
L.pushnumber(v.subframe_to_frame(n));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int _blank_frame(lua::state& L, lua::parameters& P)
|
||||
{
|
||||
portctrl::frame_vector& v = framevector(L, P);
|
||||
|
@ -426,6 +437,10 @@ namespace
|
|||
{
|
||||
return _find_frame(L, P);
|
||||
}
|
||||
int subframe_to_frame(lua::state& L, lua::parameters& P)
|
||||
{
|
||||
return _subframe_to_frame(L, P);
|
||||
}
|
||||
int blank_frame(lua::state& L, lua::parameters& P)
|
||||
{
|
||||
return _blank_frame(L, P);
|
||||
|
@ -507,6 +522,11 @@ namespace
|
|||
return _find_frame(L, P);
|
||||
}
|
||||
|
||||
int subframe_to_frame(lua::state& L, lua::parameters& P)
|
||||
{
|
||||
return _subframe_to_frame(L, P);
|
||||
}
|
||||
|
||||
int blank_frame(lua::state& L, lua::parameters& P)
|
||||
{
|
||||
return _blank_frame(L, P);
|
||||
|
@ -628,6 +648,7 @@ namespace
|
|||
{"get_size", &lua_inputmovie::get_size},
|
||||
{"count_frames", &lua_inputmovie::count_frames},
|
||||
{"find_frame", &lua_inputmovie::find_frame},
|
||||
{"subframe_to_frame", &lua_inputmovie::subframe_to_frame},
|
||||
{"blank_frame", &lua_inputmovie::blank_frame},
|
||||
{"append_frames", &lua_inputmovie::append_frames},
|
||||
{"append_frame", &lua_inputmovie::append_frame},
|
||||
|
@ -657,6 +678,7 @@ namespace
|
|||
{"get_size", get_size},
|
||||
{"count_frames", count_frames},
|
||||
{"find_frame", find_frame},
|
||||
{"subframe_to_frame", subframe_to_frame},
|
||||
{"blank_frame", blank_frame},
|
||||
{"append_frames", append_frames},
|
||||
{"append_frame", append_frame},
|
||||
|
|
Loading…
Add table
Reference in a new issue