Changeset 1156:189d790f3854 in mediastreamer2
- Timestamp:
- Sep 26, 2010 1:01:34 PM (3 years ago)
- Branch:
- default
- Files:
-
- 2 edited
-
include/mediastreamer2/mediastream.h (modified) (1 diff)
-
src/videostream.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
include/mediastreamer2/mediastream.h
r1154 r1156 211 211 void video_stream_set_relay_session_id(VideoStream *stream, const char *relay_session_id); 212 212 void video_stream_set_rtcp_information(VideoStream *st, const char *cname, const char *tool); 213 void video_stream_change_camera(VideoStream *stream, MSWebCam *cam); 213 214 /*function to call periodically to handle various events */ 214 215 void video_stream_iterate(VideoStream *stream); -
src/videostream.c
r1143 r1156 237 237 } 238 238 239 static void configure_video_source(VideoStream *stream){ 240 MSVideoSize vsize,cam_vsize; 241 float fps=15; 242 MSPixFmt format; 243 244 ms_filter_call_method(stream->encoder,MS_FILTER_GET_VIDEO_SIZE,&vsize); 245 vsize=ms_video_size_min(vsize,stream->sent_vsize); 246 ms_filter_call_method(stream->encoder,MS_FILTER_SET_VIDEO_SIZE,&vsize); 247 ms_filter_call_method(stream->encoder,MS_FILTER_GET_FPS,&fps); 248 ms_message("Setting sent vsize=%ix%i, fps=%f",vsize.width,vsize.height,fps); 249 /* configure the filters */ 250 if (ms_filter_get_id(stream->source)!=MS_STATIC_IMAGE_ID) { 251 ms_filter_call_method(stream->source,MS_FILTER_SET_FPS,&fps); 252 } 253 ms_filter_call_method(stream->source,MS_FILTER_SET_VIDEO_SIZE,&vsize); 254 /* get the output format for webcam reader */ 255 ms_filter_call_method(stream->source,MS_FILTER_GET_PIX_FMT,&format); 256 if (format==MS_MJPEG){ 257 stream->pixconv=ms_filter_new(MS_MJPEG_DEC_ID); 258 }else{ 259 stream->pixconv = ms_filter_new(MS_PIX_CONV_ID); 260 /*set it to the pixconv */ 261 ms_filter_call_method(stream->pixconv,MS_FILTER_SET_PIX_FMT,&format); 262 ms_filter_call_method(stream->source,MS_FILTER_GET_VIDEO_SIZE,&cam_vsize); 263 ms_filter_call_method(stream->pixconv,MS_FILTER_SET_VIDEO_SIZE,&cam_vsize); 264 } 265 stream->sizeconv=ms_filter_new(MS_SIZE_CONV_ID); 266 ms_filter_call_method(stream->sizeconv,MS_FILTER_SET_VIDEO_SIZE,&vsize); 267 } 268 239 269 int video_stream_start (VideoStream *stream, RtpProfile *profile, const char *remip, int remport, 240 270 int rem_rtcp_port, int payload, int jitt_comp, MSWebCam *cam){ … … 242 272 RtpSession *rtps=stream->session; 243 273 MSPixFmt format; 244 MSVideoSize vsize,cam_vsize,disp_size; 245 float fps=15; 274 MSVideoSize disp_size; 246 275 int tmp; 247 276 JBParameters jbp; … … 296 325 ms_filter_call_method(stream->encoder,MS_FILTER_ADD_FMTP,pt->send_fmtp); 297 326 } 298 ms_filter_call_method(stream->encoder,MS_FILTER_GET_VIDEO_SIZE,&vsize); 299 vsize=ms_video_size_min(vsize,stream->sent_vsize); 300 ms_filter_call_method(stream->encoder,MS_FILTER_SET_VIDEO_SIZE,&vsize); 301 ms_filter_call_method(stream->encoder,MS_FILTER_GET_FPS,&fps); 302 ms_message("Setting sent vsize=%ix%i, fps=%f",vsize.width,vsize.height,fps); 303 /* configure the filters */ 304 if (ms_filter_get_id(stream->source)!=MS_STATIC_IMAGE_ID) { 305 ms_filter_call_method(stream->source,MS_FILTER_SET_FPS,&fps); 306 } 307 ms_filter_call_method(stream->source,MS_FILTER_SET_VIDEO_SIZE,&vsize); 308 /* get the output format for webcam reader */ 309 ms_filter_call_method(stream->source,MS_FILTER_GET_PIX_FMT,&format); 310 if (format==MS_MJPEG){ 311 stream->pixconv=ms_filter_new(MS_MJPEG_DEC_ID); 312 }else{ 313 stream->pixconv = ms_filter_new(MS_PIX_CONV_ID); 314 /*set it to the pixconv */ 315 ms_filter_call_method(stream->pixconv,MS_FILTER_SET_PIX_FMT,&format); 316 ms_filter_call_method(stream->source,MS_FILTER_GET_VIDEO_SIZE,&cam_vsize); 317 ms_filter_call_method(stream->pixconv,MS_FILTER_SET_VIDEO_SIZE,&cam_vsize); 318 } 319 stream->sizeconv=ms_filter_new(MS_SIZE_CONV_ID); 320 ms_filter_call_method(stream->sizeconv,MS_FILTER_SET_VIDEO_SIZE,&vsize); 327 configure_video_source (stream); 321 328 /* and then connect all */ 322 329 ms_filter_link (stream->source, 0, stream->pixconv, 0); … … 380 387 ms_ticker_attach (stream->ticker, stream->rtprecv); 381 388 return 0; 389 } 390 391 void video_stream_change_camera(VideoStream *stream, MSWebCam *cam){ 392 if (stream->ticker && stream->source){ 393 ms_ticker_detach(stream->ticker,stream->source); 394 /*unlink source filters and subsequent post processin filters */ 395 ms_filter_unlink (stream->source, 0, stream->pixconv, 0); 396 ms_filter_unlink (stream->pixconv, 0, stream->sizeconv, 0); 397 ms_filter_unlink (stream->sizeconv, 0, stream->tee, 0); 398 /*destroy the filters */ 399 ms_filter_destroy(stream->source); 400 ms_filter_destroy(stream->pixconv); 401 ms_filter_destroy(stream->sizeconv); 402 403 /*re create new ones and configure them*/ 404 stream->source = ms_web_cam_create_reader(cam); 405 configure_video_source(stream); 406 407 ms_ticker_attach(stream->ticker,stream->source); 408 } 382 409 } 383 410
Note: See TracChangeset
for help on using the changeset viewer.
