/**
 * Update any annotation data specific to the video.
 * This simply passes on the setting from cli, or
 * if application defined annotate requested, updates
 * with the H264 parameters
 *
 * @param state Pointer to state control struct
 *
 */
void update_annotation_data(RASPIVID_STATE *state)
{
    // So, if we have asked for a application supplied string, set it to the H264 parameters
    if (state->camera_parameters.enable_annotate & ANNOTATE_APP_TEXT)
    {
        char *text;
        const char *refresh = raspicli_unmap_xref(state->intra_refresh_type, 
                intra_refresh_map, intra_refresh_map_size);

        asprintf(&text,  "%dk,%df,%s,%d,%s",
                 state->bitrate / 1000,  state->framerate,
                 refresh ? refresh : "(none)",
                 state->intraperiod,
                 raspicli_unmap_xref(state->profile, profile_map, profile_map_size));

        raspicamcontrol_set_annotate(state->camera_component, 
                state->camera_parameters.enable_annotate, text,
                state->camera_parameters.annotate_text_size,
                state->camera_parameters.annotate_text_colour,
                state->camera_parameters.annotate_bg_colour);

        free(text);
    }
    else
    {
        raspicamcontrol_set_annotate(state->camera_component, 
                state->camera_parameters.enable_annotate, 
                state->camera_parameters.annotate_string,
                state->camera_parameters.annotate_text_size,
                state->camera_parameters.annotate_text_colour,
                state->camera_parameters.annotate_bg_colour);
    }
}
Esempio n. 2
0
/**
 * Set the specified camera to all the specified settings
 * @param camera Pointer to camera component
 * @param params Pointer to parameter block containing parameters
 * @return 0 if successful, none-zero if unsuccessful.
 */
int raspicamcontrol_set_all_parameters(MMAL_COMPONENT_T *camera, const RASPICAM_CAMERA_PARAMETERS *params)
{
   int result;

   result  = raspicamcontrol_set_saturation(camera, params->saturation);
   result += raspicamcontrol_set_sharpness(camera, params->sharpness);
   result += raspicamcontrol_set_contrast(camera, params->contrast);
   result += raspicamcontrol_set_brightness(camera, params->brightness);
   result += raspicamcontrol_set_ISO(camera, params->ISO);
   result += raspicamcontrol_set_video_stabilisation(camera, params->videoStabilisation);
   result += raspicamcontrol_set_exposure_compensation(camera, params->exposureCompensation);
   result += raspicamcontrol_set_exposure_mode(camera, params->exposureMode);
   result += raspicamcontrol_set_metering_mode(camera, params->exposureMeterMode);
   result += raspicamcontrol_set_awb_mode(camera, params->awbMode);
   result += raspicamcontrol_set_awb_gains(camera, params->awb_gains_r, params->awb_gains_b);
   result += raspicamcontrol_set_imageFX(camera, params->imageEffect);
   result += raspicamcontrol_set_colourFX(camera, &params->colourEffects);
   //result += raspicamcontrol_set_thumbnail_parameters(camera, &params->thumbnailConfig);  TODO Not working for some reason
   result += raspicamcontrol_set_rotation(camera, params->rotation);
   result += raspicamcontrol_set_flips(camera, params->hflip, params->vflip);
   result += raspicamcontrol_set_ROI(camera, params->roi);
   result += raspicamcontrol_set_shutter_speed(camera, params->shutter_speed);
   result += raspicamcontrol_set_DRC(camera, params->drc_level);
   result += raspicamcontrol_set_stats_pass(camera, params->stats_pass);
   result += raspicamcontrol_set_annotate(camera, params->enable_annotate, params->annotate_string,
                       params->annotate_text_size,
                       params->annotate_text_colour,
                       params->annotate_bg_colour);

   return result;
}