Пример #1
0
        DeckLinkOutputAdapter(unsigned int card_index = 0, 
                unsigned int norm_ = 0, 
                RawFrame::PixelFormat pf_ = RawFrame::CbYCrY8422,
                bool enable_audio = false) 
                : deckLink(NULL), 
                deckLinkOutput(NULL), frame_counter(0),
                last_frame(NULL), in_pipe(OUT_PIPE_SIZE), audio_in_pipe(NULL) {

            norm = norm_;
            assert(norm < sizeof(norms) / sizeof(struct decklink_norm));
            time_base = norms[norm].time_base;
            frame_duration = norms[norm].frame_duration;

            pf = pf_;
            bpf = convert_pf(pf_); 

            deckLink = find_card(card_index);
            configure_card( );
            open_card( );
            preroll_video_frames(16);

            if (enable_audio) {
                setup_audio( );
            }

            start_video( );

            thread_priority_hack( );

            fprintf(stderr, "DeckLink: initialized using norm %s\n", 
                    norms[norm].name);
        }
Пример #2
0
int bg_ogg_encoder_start(void * data)
  {
  int i;
  bg_ogg_encoder_t * e = data;

  /* Start encoders and write identification headers */
  for(i = 0; i < e->num_video_streams; i++)
    {
    if(!start_video(e, i))
      return 0;
    }
  for(i = 0; i < e->num_audio_streams; i++)
    {
    if(!start_audio(e, i))
      return 0;
    }

  /* Write remaining header pages */
  for(i = 0; i < e->num_video_streams; i++)
    {
    bg_ogg_stream_t * s = &e->video_streams[i];
    if(bg_ogg_stream_flush(s, 1) < 0)
      return 0;
    }
  for(i = 0; i < e->num_audio_streams; i++)
    {
    bg_ogg_stream_t * s = &e->audio_streams[i];
    if(bg_ogg_stream_flush(s, 1) < 0)
      return 0;
    }
  
  return 1;
  }
Пример #3
0
void kernel_main(struct multiboot_info *mboot, int initial_stack)
{
    long int mem = 0;
	mboot_info = mboot;
	start_video();
    putstr("Init Descriptor Tables................."); 
    gdt_install(); 
    idt_install();
    putstr("[OK]\n"); 
    putstr("Init ISRs.............................."); 
    isr_install();    
    putstr("[OK]\n"); 
    putstr("Init IRQs.............................."); 
    irq_install(); 
    __asm__ __volatile__ ("sti");   
    putstr("[OK]\n"); 
    putstr("Init PIT..............................."); 
    timer_install();
    putstr("[OK]\n");    
    putstr("Amount of memory......................");
    mem = mboot->mem_upper / 1024; 
    putnum(mem);
    putstr("MB\n");
	putstr("Init Memory............................");
	init_memory_manager();
    putstr("\n\n");     
    putstr("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWelcome to Plex!");
    for (;;); 
}
Пример #4
0
int main(int argc, char *argv[]) {
  vid_options_t vopt;
  memset(&vopt, 0, sizeof(vid_options_t));
  vopt.width = 100;
  vopt.height = 40;
  vopt.disp_bandwidth = 0;
  return start_video(argv[1], "55556", &vopt);
}
Пример #5
0
void GuiPlayer::dropEvent( QDropEvent *event ){
	if( event->mimeData()->hasUrls() ){
		event->setDropAction( Qt::CopyAction );
		
		start_video( event->mimeData()->urls()[0] );
		
		event->accept();
	}
}
Пример #6
0
JNIEXPORT jint JNICALL Java_cn_edu_hust_buildingtalkback_jni_NativeInterface_startVideo(
		JNIEnv *env, jclass clazz, jboolean capture, jboolean display)
{
	LOG_FUNC();

	int cap = (capture == JNI_TRUE);
	int dis = (display == JNI_TRUE);

	return start_video(cap, dis);
}
Пример #7
0
int command_dispatcher(int command_id, char * args, char * result_str)
{
    int result = 0;
    int arg_param;
 
    switch(command_id)
    {
        case TS_PREVIEW_START:
            result = start_preview();
            break;

        case TS_PREVIEW_STOP:
            result = stop_preview();
            break;

	    case TS_VIDEO_START:
            result = start_video();
            break;

        case TS_VIDEO_STOP:
            result = stop_video();
            break;

        case TS_SNAPSHOT_YUV_PICTURE:
            result = take_picture(ACTION_TAKE_YUV_PICTURE);
            break;

        case TS_SNAPSHOT_JPEG_PICTURE:
            result = take_picture(ACTION_TAKE_JPEG_PICTURE);
            break;

        case TS_SNAPSHOT_RAW_PICTURE:
            result = take_raw_picture();
            break;

        case TS_SNAPSHOT_STOP:
            result = testsuite_snapshot_stop();
            break;

        case TS_SYSTEM_INIT:
            result = system_init();
            break;

        case TS_SYSTEM_DESTROY:
            result = system_destroy();
            break;

        case TS_PRINT_MAXZOOM:
            result = print_maxzoom();
            break;

        case TS_PRINT_ZOOMRATIOS:
            result = print_zoomratios();
            break;

        case TS_ZOOM_INCREASE:
            result = zoom_increase(1);
            break;

        case TS_ZOOM_DECREASE:
            result = zoom_decrease(1);
            break;

        case TS_ZOOM_STEP_INCREASE:
            result = zoom_increase(0);
            break;

        case TS_ZOOM_STEP_DECREASE:
            result = zoom_decrease(0);
            break;

        case TS_CONTRAST_INCREASE:
            result = increase_contrast();
            break;

        case TS_CONTRAST_DECREASE:
            result = decrease_contrast();
            break;

        case TS_SATURATION_INCREASE:
            result = increase_saturation();
            break;

        case TS_SATURATION_DECREASE:
            result = decrease_saturation();
            break;

        case TS_SPECIAL_EFFECT:
            result = SpecialEffect();
            break;

        case TS_BRIGHTNESS_INCREASE:
            result = increase_brightness();
            break;

        case TS_BRIGHTNESS_DECREASE:
            result = decrease_brightness();
            break;

        case TS_EV_INCREASE:
            result = increase_EV();
            break;

        case TS_EV_DECREASE:
            result = decrease_EV();
            break;

        case TS_ANTI_BANDING:
            result = set_antibanding();
            break;

        case TS_SET_WHITE_BALANCE:
            result = set_whitebalance();
            break;

        case TS_AEC_MODE:
            result = AEC_mode_change();
            break;

        case TS_ISO_INCREASE:
            result = increase_ISO();
            break;

        case TS_ISO_DECREASE:
            result = decrease_ISO();
            break;

        case TS_SHARPNESS_INCREASE:
            result = increase_sharpness();
            break;

        case TS_SHARPNESS_DECREASE:
            result = decrease_sharpness();
            break;

        case TS_SET_AUTO_FOCUS:
            result = set_auto_focus();
            break;

        case TS_SET_HJR:
            result = set_hjr();
            break;

        case TS_SET_LENS_SHADING:
            result = LensShading();
            break;

        case TS_SET_LED_MODE:
            result = LED_mode_change();
            break;

        case TS_GET_SHARPNESS_AF:
            result = set_sharpness_AF();
            break;

        case TS_SNAPSHOT_RESOLUTION:
            arg_param = atoi(args);
            result = snapshot_resolution(arg_param);
            break;

        case TS_PREVIEW_RESOLUTION:
            arg_param = atoi(args);
            result = preview_video_resolution (arg_param);
            break;

        case TS_MOTION_ISO:
            result = set_MotionIso();
            break;

        case TS_TOGGLE_HUE:
            result = toggle_hue();
            break;

        case TS_CANCEL_AUTO_FOCUS:
            result = cancel_af();
            break;

        case TS_GET_AF_STEP:
            result = get_af_step();
            break;

        case TS_SET_AF_STEP:
            result = set_af_step();
            break;

        case TS_ENABLE_AFD:
            result = enable_afd();
            break;

        case TEST_VIDIOC_G_FMT:
            result = msm_v4l2_vidioc_g_fmt();
            break;

        case TEST_VIDIOC_S_FMT:
            result = msm_v4l2_vidioc_s_fmt();
            break;

        case TEST_VIDIOC_CROPCAP:
            result = msm_v4l2_vidioc_cropcap();
            break;

        case TEST_VIDIOC_G_CROP:
            result = msm_v4l2_vidioc_g_crop();
            break;

        case TEST_VIDIOC_S_CROP:
            result = msm_v4l2_vidioc_s_crop();
            break;

        case TEST_VIDIOC_QUERYMENU:
            result = msm_v4l2_vidioc_querymenu(args);
            break;

        case TEST_VIDIOC_QUERYCTRL:
            result = msm_v4l2_vidioc_queryctrl(NULL);
            break;

        case TEST_VIDIOC_S_CTRL:
            result = msm_v4l2_vidioc_s_ctrl(args);
            break;

        case TEST_VIDIOC_G_CTRL:
            result = msm_v4l2_vidioc_g_ctrl(args);
            break;

        default:
            break;
    }
    return result;
}
Пример #8
0
void process_cmd(char *readbuf, int length) {
   typedef enum pipe_cmd_type{ca,im,tl,px,bo,tv,an,as,at,ac,ab,sh,co,br,sa,is,vs,rl,ec,em,wb,mm,ie,ce,ro,fl,ri,ss,qu,pv,bi,ru,md,sc,rs,bu,mn,mt,mi,mb,me,mx,mf,vm,vp,wd,sy,cn,st} pipe_cmd_type;
   char pipe_cmds[] = "ca,im,tl,px,bo,tv,an,as,at,ac,ab,sh,co,br,sa,is,vs,rl,ec,em,wb,mm,ie,ce,ro,fl,ri,ss,qu,pv,bi,ru,md,sc,rs,bu,mn,mt,mi,mb,me,mx,mf,vm,vp,wd,sy,cn,st";
   pipe_cmd_type pipe_cmd;
   int parcount;
   char pars[128][10];
   long int par0;
   char cmd[3];
   char par[MAX_COMMAND_LEN];
   char *parstring=0, *temp;
   int key = -1;
   
   if (length < 2 || length > (MAX_COMMAND_LEN - 2)) return;
   
   //Get cmd
   strncpy(cmd, readbuf, 2);
    //find 2 letter command and translate into enum
   temp = strstr(pipe_cmds, cmd);
   if (temp == NULL) return;
   pipe_cmd = (pipe_cmd_type)((temp - pipe_cmds) / 3);
  
   if(length > 3) {
      strcpy(par, readbuf + 3);
      par[length-3] = 0;
      //extract space separated numeric parameters
      // and make separate string parameter (strtok changes the original)
      asprintf(&parstring, "%s", par);
      parcount = 0;
      temp = strtok(par, " ");
      while(parcount<10 && temp != NULL) {
         strcpy(pars[parcount], temp);
         parcount++;
         temp = strtok(NULL, " ");
      }
      par0 = strtol(pars[0], NULL, 10);
   } else {
      par0 = 0;
   }
   
   switch(pipe_cmd) {
      case ca:
         if(par0 == 1) {
            if (parcount > 1) {
               long vtime = strtol(pars[1], NULL, 10);
               video_stoptime = time(NULL) + vtime;
               printLog("Capturing %d seconds\n", vtime);
            }
            start_video(0);
         }  else {
            stop_video(0);
         }
         break;
      case im:
         capt_img();
         break;
      case tl:
         if(par0) {
            timelapse = 1;
            lapse_cnt = 1;
            updateStatus();
            printLog("Timelapse started\n");
         }
         else {
            image2_cnt++;
            timelapse = 0;
            updateStatus();
            printLog("Timelapse stopped\n");
         }
         break;
      case px:
         stop_all();
         addUserValue(c_video_width, pars[0]);
         addUserValue(c_video_height, pars[1]);
         addUserValue(c_video_fps, pars[2]);
         addUserValue(c_MP4Box_fps, pars[3]);
         addUserValue(c_image_width, pars[4]);
         addUserValue(c_image_height, pars[5]);
         start_all(0);
         break;
      case bo:
         addUserValue(c_MP4Box, pars[0]);
         break;
      case tv:
         addUserValue(c_tl_interval, pars[0]);
         break;
      case an:
         addUserValue(c_annotation, parstring);
         break;
      case as:
         addUserValue(c_anno_text_size, pars[0]);
         break;
      case at:
         addUserValue(c_anno3_custom_text_colour, pars[0]);
         addUserValue(c_anno3_custom_text_Y, pars[1]);
         addUserValue(c_anno3_custom_text_U, pars[2]);
         addUserValue(c_anno3_custom_text_V, pars[3]);
         break;
      case ac:
         addUserValue(c_anno3_custom_background_colour, pars[0]);
         addUserValue(c_anno3_custom_background_Y, pars[1]);
         addUserValue(c_anno3_custom_background_U, pars[2]);
         addUserValue(c_anno3_custom_background_V, pars[3]);
         break;
      case ab:
         addUserValue(c_anno_background, pars[0]);
         break;
      case sh:
         key = c_sharpness;
         break;
      case co:
         key = c_contrast;
         break;
      case br:
         key = c_brightness;
         break;
      case sa:
         key = c_saturation;
         break;
      case is:
         key = c_iso;
         break;
      case vs:
         key = c_video_stabilisation;
         break;
      case rl:
         key = c_raw_layer;
         break;
      case ec:
         key = 1000 + c_exposure_compensation;
         break;
      case em:
         key = 1000 + c_exposure_mode;
         break;
      case wb:
         key = 1000 + c_white_balance;
         break;
      case mm:
         key = 1000 + c_metering_mode;
         break;
      case ie:
         key = 1000 + c_image_effect;
         break;
      case ce:
         addUserValue(c_colour_effect_u, pars[1]);
         addUserValue(c_colour_effect_v, pars[2]);
         key = c_colour_effect_en;
         break;
      case ro:
         key = c_rotation;
         break;
      case fl:
         if(par0 & 1) addUserValue(c_hflip, "1"); else addUserValue(c_hflip, "0"); 
         if((par0 >> 1) & 1) addUserValue(c_vflip, "1"); else addUserValue(c_vflip, "0"); 
         cam_set(c_hflip);
         break;
      case ri:
         addUserValue(c_sensor_region_y, pars[1]);
         addUserValue(c_sensor_region_w, pars[2]);
         addUserValue(c_sensor_region_h, pars[3]);
         key = c_sensor_region_x;
         break;
      case ss:
         addUserValue(c_shutter_speed, pars[0]);
         key = c_shutter_speed;
         break;
      case qu:
         key = c_image_quality;
         break;
      case pv:
         stop_all();
         addUserValue(c_quality, pars[0]);
         addUserValue(c_width, pars[1]);
         addUserValue(c_divider, pars[2]);
         start_all(0);
         break;
      case bi:
         stop_all();
         addUserValue(c_video_bitrate, pars[0]);
         start_all(0);
         break;
      case st:
         stop_all();
         addUserValue(c_stat_pass, pars[0]);
         start_all(0);
         break;
      case wd:
         addUserValue(c_watchdog_interval, pars[0]);
         addUserValue(c_watchdog_errors, pars[1]);
         break;
      case ru:
         if (par0 == 0) {
            stop_all();
            idle = 1;
            printLog("Stream halted\n");
         } else {
            start_all(1);
            idle = 0;
            printLog("Stream continued\n");
         }
         updateStatus();
         break;
      case mx:
         key = c_motion_external;
         //If switching to internal with motion detection on then try to kill external motion
         if (cfg_val[c_motion_detection] != 0 && !par0) {
            if(system("killall motion") == -1) error("Could not stop external motion", 1);
            printLog("External motion detection stopped\n");
         }
         break;
      case md:
         exec_macro(cfg_stru[c_do_cmd], readbuf);
         stop_all();
         if (cfg_val[c_motion_external]) {
            if(par0 == 0) {
               if(system("killall motion") == -1) error("Could not stop external motion", 1);
               printLog("External motion detection stopped\n");
            }
            else {
               if (cfg_val[c_motion_detection] == 0) {
                  if(system("motion") == -1) error("Could not start external motion", 1);
                  printLog("External motion detection started\n");
               } else {
                  printLog("Motion already running. md 1 ignored\n");
               }
            }
         } else {
            if(par0 == 0) {
               printLog("Internal motion detection stopped\n");
            }
            else {
               printLog("Internal motion detection started\n");
            }
         }
         cfg_val[c_motion_detection] = par0?1:0;
         start_all(0);
         updateStatus();
         break;
      case sc:
         set_counts();
         printLog("Scan for highest count\n");
         break;
      case rs:
         printLog("Reset settings to defaults\n");
         stop_all();
         read_config("/etc/raspimjpeg", 1);
         saveUserConfig(cfg_stru[c_user_config]);
         start_all(0);
         break;
      case bu:
         key = c_video_buffer;
         break;
      case vp:
         stop_all();
         addUserValue(c_vector_preview, pars[0]);
         start_all(0);
         break;
      case mn:
         key = c_motion_noise;
         break;
      case mt:
         key = c_motion_threshold;
         break;
      case mi:
         key = c_motion_image + 1000;
         break;
      case mb:
         key = c_motion_startframes;
         break;
      case me:
         key = c_motion_stopframes;
         break;
      case mf:
         key = c_motion_file;
         break;
      case vm:
         key = c_vector_mode;
         break;
      case sy:
         exec_macro(parstring, NULL);
         break;
      case cn:
         stop_all();
         addUserValue(c_camera_num, pars[0]);
         start_all(0);
         break;
      default:
         printLog("Unrecognised pipe command\n");
         break;
   }