Flip video using Argus API

Facedetection works great as long as everything isn’t upside down. Is there an Argus interface that allows you to flip the video stream?

Please try to use video converter “V4L2_CID_VIDEO_CONVERT_FLIP_METHOD”

External Media

Here’s my attempt at using V4L2_CID_VIDEO_CONVERT_FLIP_METHOD. I added this code (taken from NvVideoConverter::setFlipMethod) to the top of argus_oneshot to try and take a rotated picture. However ioctl is returning EFAULT (Bad address).

#include <linux/videodev2.h>
#include "v4l2_nv_extensions.h"
#include <fcntl.h>
#include <sys/ioctl.h>

int main(int argc, char** argv)
    int fd = open("/dev/nvhost-vic", O_RDWR);

    if(fd == -1) printf("Could not open device /dev/nvhost-vic\n");
        struct v4l2_ext_control ctl;
        struct v4l2_ext_controls controls;
        memset(&ctl, 0, sizeof(ctl));
        memset(&controls, 0, sizeof(controls));

        ctl.id = (V4L2_CID_VIDEO_CONVERT_FLIP_METHOD);
        ctl.value = (uint32_t)V4L2_FLIP_METHOD_180;
        controls.controls = &ctl;
        controls.count = 1;

        if( ioctl(fd, VIDIOC_S_EXT_CTRLS, &controls) != 0) perror("Flip failed");


Please reference to the tegra_multimedia_api/samples/07_video_convert to use the NvVideoConverter class.

if (ctx.flip_method != -1)
        ret = main_conv->setFlipMethod(ctx.flip_method);
        TEST_ERROR(ret < 0, "Could not set flip method", cleanup);

Tried that, but couldn’t figure out how to set up Cmake to get rid of the linker errors. It seemed like a pretty thin wrapper around the ioctl.

I’ll try getting NvVideoConverter working again.