/* * free image buffers for decoding video stream * args: * vd - pointer to video device data * * asserts: * vd is not null * * returns: none */ void clean_v4l2_frames(v4l2_dev_t *vd) { /*assertions*/ assert(vd != NULL); int i = 0; for(i=0; i<vd->frame_queue_size; ++i) { vd->frame_queue[i].raw_frame = NULL; if(vd->frame_queue[i].tmp_buffer) { free(vd->frame_queue[i].tmp_buffer); vd->frame_queue[i].tmp_buffer = NULL; } if(vd->frame_queue[i].h264_frame) { free(vd->frame_queue[i].h264_frame); vd->frame_queue[i].h264_frame = NULL; } if(vd->frame_queue[i].yuv_frame) { free(vd->frame_queue[i].yuv_frame); vd->frame_queue[i].yuv_frame = NULL; } } if(vd->h264_last_IDR) { free(vd->h264_last_IDR); vd->h264_last_IDR = NULL; } if(vd->h264_SPS) { free(vd->h264_SPS); vd->h264_SPS = NULL; } if(vd->h264_PPS) { free(vd->h264_PPS); vd->h264_PPS = NULL; } if(vd->requested_fmt == V4L2_PIX_FMT_H264) h264_close_decoder(); if(vd->requested_fmt == V4L2_PIX_FMT_JPEG || vd->requested_fmt == V4L2_PIX_FMT_MJPEG) jpeg_close_decoder(); }
~GuvcviewFormatConverter() { jpeg_close_decoder(); delete_buffers(); }