@ -95,6 +95,12 @@ int main(void)
@@ -95,6 +95,12 @@ int main(void)
struct video_frmival frmival ;
struct video_frmival_enum fie ;
enum video_buf_type type = VIDEO_BUF_TYPE_OUTPUT ;
# if (CONFIG_VIDEO_SOURCE_CROP_WIDTH && CONFIG_VIDEO_SOURCE_CROP_HEIGHT) || \
CONFIG_VIDEO_FRAME_HEIGHT | | CONFIG_VIDEO_FRAME_WIDTH
struct video_selection sel = {
. type = VIDEO_BUF_TYPE_OUTPUT ,
} ;
# endif
unsigned int frame = 0 ;
size_t bsize ;
int i = 0 ;
@ -139,6 +145,22 @@ int main(void)
@@ -139,6 +145,22 @@ int main(void)
return 0 ;
}
/* Set the crop setting if necessary */
# if CONFIG_VIDEO_SOURCE_CROP_WIDTH && CONFIG_VIDEO_SOURCE_CROP_HEIGHT
sel . target = VIDEO_SEL_TGT_CROP ;
sel . rect . left = CONFIG_VIDEO_SOURCE_CROP_LEFT ;
sel . rect . top = CONFIG_VIDEO_SOURCE_CROP_TOP ;
sel . rect . width = CONFIG_VIDEO_SOURCE_CROP_WIDTH ;
sel . rect . height = CONFIG_VIDEO_SOURCE_CROP_HEIGHT ;
if ( video_set_selection ( video_dev , & sel ) ) {
LOG_ERR ( " Unable to set selection crop " ) ;
return 0 ;
}
LOG_INF ( " Selection crop set to (%u,%u)/%ux%u " ,
sel . rect . left , sel . rect . top , sel . rect . width , sel . rect . height ) ;
# endif
# if CONFIG_VIDEO_FRAME_HEIGHT || CONFIG_VIDEO_FRAME_WIDTH
# if CONFIG_VIDEO_FRAME_HEIGHT
fmt . height = CONFIG_VIDEO_FRAME_HEIGHT ;
# endif
@ -147,6 +169,31 @@ int main(void)
@@ -147,6 +169,31 @@ int main(void)
fmt . width = CONFIG_VIDEO_FRAME_WIDTH ;
# endif
/*
* Check ( if possible ) if targeted size is same as crop
* and if compose is necessary
*/
sel . target = VIDEO_SEL_TGT_CROP ;
err = video_get_selection ( video_dev , & sel ) ;
if ( err < 0 & & err ! = - ENOSYS ) {
LOG_ERR ( " Unable to get selection crop " ) ;
return 0 ;
}
if ( err = = 0 & & ( sel . rect . width ! = fmt . width | | sel . rect . height ! = fmt . height ) ) {
sel . target = VIDEO_SEL_TGT_COMPOSE ;
sel . rect . left = 0 ;
sel . rect . top = 0 ;
sel . rect . width = fmt . width ;
sel . rect . height = fmt . height ;
err = video_set_selection ( video_dev , & sel ) ;
if ( err < 0 & & err ! = - ENOSYS ) {
LOG_ERR ( " Unable to set selection compose " ) ;
return 0 ;
}
}
# endif
if ( strcmp ( CONFIG_VIDEO_PIXEL_FORMAT , " " ) ) {
fmt . pixelformat = VIDEO_FOURCC_FROM_STR ( CONFIG_VIDEO_PIXEL_FORMAT ) ;
}