예제 #1
0
파일: cli.cpp 프로젝트: grtyvr/teensy-dsc
/*
 * Save Wifi Settings to EEPROM
 */
cmd_status 
wifi_save_settings(cli_ctx *ctx, const char *args) {
    encoder_settings_t encoder;

    set_network_settings(ctx->common->network);

    encoder.ra_cps = ctx->common->ra_cps;
    encoder.dec_cps = ctx->common->dec_cps;
    set_encoder_settings(&encoder);
    ctx->serial->printf("OK\n");
    return E_CMD_OK;
}
예제 #2
0
static GstElement *
create_encoder (GstRTSPCamMediaFactory *factory,
    gchar *codec_name)
{
  CodecDescriptor *codec;
  GstElement *encoder;

  codec = find_codec (codec_name);
  if (codec == NULL) {
    GST_ERROR_OBJECT (factory, "invalid codec %s", codec_name);
    return NULL;
  }

  encoder = gst_element_factory_make(codec->encoder, NULL);
  if (codec->encoder_settings)
      set_encoder_settings(encoder, codec->encoder_settings);

  return encoder;
}
예제 #3
0
/*
 * Allows the user to set the Encoder resolution
 */
cmd_status
dsc_set_resolution(cli_ctx *ctx, const char *args) {
    int match = 0;
    long ra, dec;
    encoder_settings_t encoder_settings;

    match = sscanf(args, "%ld %ld", &ra, &dec);
    if (match != 2) {
        return E_CMD_TOO_SHORT;
    }

    ctx->common->ra_cps = ra;
    ctx->common->dec_cps = dec;

    /* write the values to EEPROM for later */
    encoder_settings.ra_cps = ctx->common->ra_cps;
    encoder_settings.dec_cps = ctx->common->dec_cps;
    set_encoder_settings(&encoder_settings);
    return E_CMD_OK;
}
예제 #4
0
/*
 * BBox set encoder resolution
 */
cmd_status
bbx_set_resolution(cli_ctx *ctx, const char *args) {
    int match = 0;
    long ra, dec;
    encoder_settings_t encoder_settings;

    /* there may be a \r\n here to parse as well??? */
    match = sscanf(args, "%ld %ld", &ra, &dec);
    if (match != 2) {
        return E_CMD_TOO_SHORT;
    }

    ctx->common->ra_cps = ra;
    ctx->common->dec_cps = dec;

    /* write the values to EEPROM for later */
    encoder_settings.ra_cps = ctx->common->ra_cps;
    encoder_settings.dec_cps = ctx->common->dec_cps;
    set_encoder_settings(&encoder_settings);
    ctx->serial->printf("*");
    return E_CMD_OK;
}
예제 #5
0
파일: stream_pvr.c 프로젝트: kax4/mpv
static int
pvr_stream_open (stream_t *stream, int mode, void *opts, int *file_format)
{
  struct v4l2_capability vcap;
  struct v4l2_ext_controls ctrls;
  struct pvr_t *pvr = NULL;

  if (mode != STREAM_READ)
    return STREAM_UNSUPPORTED;

  pvr = pvr_init ();

  /**
   * if the url, i.e. 'pvr://8', contains the channel, use it,
   * else use the tv parameter.
   */
  if (stream->url && strlen (stream->url) > 6 && stream->url[6] != '\0')
    pvr->param_channel = strdup (stream->url + 6);
  else if (stream_tv_defaults.channel && strlen (stream_tv_defaults.channel))
    pvr->param_channel = strdup (stream_tv_defaults.channel);

  parse_v4l2_tv_options (pvr);
  parse_encoder_options (pvr);

  /* open device */
  pvr->dev_fd = open (pvr->video_dev, O_RDWR);
  mp_msg (MSGT_OPEN, MSGL_INFO,
          "%s Using device %s\n", LOG_LEVEL_PVR, pvr->video_dev);
  if (pvr->dev_fd == -1)
  {
    mp_msg (MSGT_OPEN, MSGL_ERR,
            "%s error opening device %s\n", LOG_LEVEL_PVR, pvr->video_dev);
    pvr_uninit (pvr);
    return STREAM_ERROR;
  }

  /* query capabilities (i.e test V4L2 support) */
  if (ioctl (pvr->dev_fd, VIDIOC_QUERYCAP, &vcap) < 0)
  {
    mp_msg (MSGT_OPEN, MSGL_ERR,
            "%s device is not V4L2 compliant (%s).\n",
            LOG_LEVEL_PVR, strerror (errno));
    pvr_uninit (pvr);
    return STREAM_ERROR;
  }
  else
    mp_msg (MSGT_OPEN, MSGL_INFO,
            "%s Detected %s\n", LOG_LEVEL_PVR, vcap.card);

  /* check for a valid V4L2 capture device */
  if (!(vcap.capabilities & V4L2_CAP_VIDEO_CAPTURE))
  {
    mp_msg (MSGT_OPEN, MSGL_ERR,
            "%s device is not a valid V4L2 capture device.\n",
            LOG_LEVEL_PVR);
    pvr_uninit (pvr);
    return STREAM_ERROR;
  }

  /* check for device hardware MPEG encoding capability */
  ctrls.ctrl_class = V4L2_CTRL_CLASS_MPEG;
  ctrls.count = 0;
  ctrls.controls = NULL;

  if (ioctl (pvr->dev_fd, VIDIOC_G_EXT_CTRLS, &ctrls) < 0)
  {
    mp_msg (MSGT_OPEN, MSGL_ERR,
            "%s device do not support MPEG input.\n", LOG_LEVEL_ENCODER);
    return STREAM_ERROR;
  }

  /* list V4L2 capabilities */
  if (v4l2_list_capabilities (pvr) == -1)
  {
    mp_msg (MSGT_OPEN, MSGL_ERR,
            "%s can't get v4l2 capabilities\n", LOG_LEVEL_PVR);
    pvr_uninit (pvr);
    return STREAM_ERROR;
  }

  /* apply V4L2 settings */
  if (set_v4l2_settings (pvr) == -1)
  {
    mp_msg (MSGT_OPEN, MSGL_ERR,
            "%s can't set v4l2 settings\n", LOG_LEVEL_PVR);
    pvr_uninit (pvr);
    return STREAM_ERROR;
  }

  /* apply encoder settings */
  if (set_encoder_settings (pvr) == -1)
  {
    mp_msg (MSGT_OPEN, MSGL_ERR,
            "%s can't set encoder settings\n", LOG_LEVEL_PVR);
    pvr_uninit (pvr);
    return STREAM_ERROR;
  }

  /* display current V4L2 settings */
  if (v4l2_display_settings (pvr) == -1)
  {
    mp_msg (MSGT_OPEN, MSGL_ERR,
            "%s can't get v4l2 settings\n", LOG_LEVEL_PVR);
    pvr_uninit (pvr);
    return STREAM_ERROR;
  }

  stream->priv = pvr;
  stream->type = STREAMTYPE_PVR;
  stream->fill_buffer = pvr_stream_read;
  stream->close = pvr_stream_close;

  return STREAM_OK;
}