Changeset 997:af08e76faf30 in mediastreamer2


Ignore:
Timestamp:
Jun 16, 2010 3:58:20 PM (3 years ago)
Author:
Simon Morlat <simon.morlat@…>
Branch:
default
Children:
998:839bce90310e, 999:dea676cb3e7e
Message:

add new video external display filter

Files:
2 added
10 edited

Legend:

Unmodified
Added
Removed
  • NEWS

    r988 r997  
     1mediastreamer-2.5.1: ??? 
     2 
    13mediastreamer-2.5.0: June 3, 2010 
    24        * fix regression with speex decoder at 16 and 32khz. 
  • configure.ac

    r990 r997  
    11dnl Process this file with autoconf to produce a configure script. 
    2 AC_INIT([mediastreamer],[2.5.0]) 
     2AC_INIT([mediastreamer],[2.5.0.1]) 
    33 
    44AC_MSG_NOTICE([$PACKAGE_NAME-$PACKAGE_VERSION           A mediastreaming library for telephony application.]) 
  • include/mediastreamer2/Makefile.am

    r982 r997  
    2929                                mschanadapter.h \ 
    3030                                msaudiomixer.h \ 
    31                                 msitc.h 
     31                                msitc.h \ 
     32                                msextdisplay.h 
    3233 
    3334EXTRA_DIST=$(mediastreamer2_include_HEADERS) 
  • include/mediastreamer2/allfilters.h

    r982 r997  
    9696        MS_AUDIO_MIXER_ID, 
    9797        MS_ITC_SINK_ID, 
    98         MS_ITC_SOURCE_ID 
     98        MS_ITC_SOURCE_ID, 
     99        MS_EXT_DISPLAY_ID 
    99100} MSFilterId; 
    100101 
  • include/mediastreamer2/mediastream.h

    r989 r997  
    162162 *****************/ 
    163163 
     164typedef void (*VideoStreamRenderCallback)(void *user_pointer, const MSPicture *local_view, const MSPicture *remote_view); 
    164165 
    165166struct _VideoStream 
     
    179180        MSVideoSize sent_vsize; 
    180181        int corner; /*for selfview*/ 
     182        VideoStreamRenderCallback rendercb; 
     183        void *render_pointer; 
    181184        bool_t adapt_bitrate; 
    182185}; 
     
    186189VideoStream *video_stream_new(int locport, bool_t use_ipv6); 
    187190void video_stream_enable_adaptive_bitrate_control(VideoStream *s, bool_t yesno); 
     191void video_stream_set_render_callback(VideoStream *s, VideoStreamRenderCallback cb, void *user_pointer); 
    188192int video_stream_start(VideoStream * stream, RtpProfile *profile, const char *remip, int remport, int rem_rtcp_port, 
    189193                int payload, int jitt_comp, MSWebCam *device); 
  • include/mediastreamer2/msaudiomixer.h

    r982 r997  
    2020#define msaudiomixer_h 
    2121 
    22 #include "msfilter.h" 
     22#include "mediastreamer2/msfilter.h" 
    2323 
    2424typedef struct MSAudioMixerCtl{ 
  • src/Makefile.am

    r982 r997  
    129129                                msvideo.c \ 
    130130                                rfc3984.c \ 
    131                                 mire.c 
     131                                mire.c \ 
     132                                extdisplay.c 
    132133 
    133134libmediastreamer_la_SOURCES+=videostream.c 
  • src/drawdib-display.c

    r976 r997  
    559559 
    560560                ReleaseDC(NULL,hdc); 
    561                 if (main_im!=NULL) 
    562                         ms_queue_flush(f->inputs[0]); 
    563                 if (local_im!=NULL) 
    564                         ms_queue_flush(f->inputs[1]); 
    565         } 
     561        } 
     562        if (f->inputs[0]!=NULL) 
     563                ms_queue_flush(f->inputs[0]); 
     564        if (f->inputs[1]!=NULL) 
     565                ms_queue_flush(f->inputs[1]); 
    566566} 
    567567 
  • src/msfilter.c

    r992 r997  
    152152 
    153153#define MS_FILTER_METHOD_GET_FID(id)    (((id)>>16) & 0xFFFF) 
     154#define MS_FILTER_METHOD_GET_INDEX(id) ( ((id)>>8) & 0XFF)  
    154155 
    155156static inline bool_t is_interface_method(unsigned int magic){ 
     
    175176                } 
    176177        } 
    177         if (magic!=MS_FILTER_BASE_ID) ms_error("no such method on filter %s, fid=%i",f->desc->name,magic); 
     178        if (magic!=MS_FILTER_BASE_ID) ms_error("no such method on filter %s, fid=%i method index=%i",f->desc->name,magic, 
     179                                   MS_FILTER_METHOD_GET_INDEX(id) ); 
    178180        return -1; 
    179181} 
  • src/videostream.c

    r985 r997  
    2323#include "mediastreamer2/msrtp.h" 
    2424#include "mediastreamer2/msvideoout.h" 
    25  
     25#include "mediastreamer2/msextdisplay.h" 
    2626 
    2727#ifdef HAVE_CONFIG_H 
     
    195195} 
    196196 
     197void video_stream_set_render_callback (VideoStream *s, VideoStreamRenderCallback cb, void *user_pointer){ 
     198        s->rendercb=cb; 
     199        s->render_pointer=user_pointer; 
     200} 
     201 
     202static void ext_display_cb(void *ud, unsigned int event, void *eventdata){ 
     203        MSExtDisplayOutput *output=(MSExtDisplayOutput*)eventdata; 
     204        VideoStream *st=(VideoStream*)ud; 
     205        if (st->rendercb!=NULL){ 
     206                st->rendercb(st->render_pointer, 
     207                            output->local_view.w!=0 ? &output->local_view : NULL, 
     208                            output->remote_view.w!=0 ? &output->remote_view : NULL); 
     209        } 
     210} 
     211 
    197212int video_stream_start (VideoStream *stream, RtpProfile *profile, const char *remip, int remport, 
    198213        int rem_rtcp_port, int payload, int jitt_comp, MSWebCam *cam){ 
     
    247262        stream->source = ms_web_cam_create_reader(cam); 
    248263        stream->tee = ms_filter_new(MS_TEE_ID); 
     264 
     265        if (stream->rendercb!=NULL){ 
     266                stream->output=ms_filter_new(MS_EXT_DISPLAY_ID); 
     267                ms_filter_set_notify_callback (stream->output,ext_display_cb,stream); 
     268        }else{ 
    249269#ifndef WIN32 
    250         stream->output=ms_filter_new(MS_VIDEO_OUT_ID); 
     270                stream->output=ms_filter_new(MS_VIDEO_OUT_ID); 
    251271#else 
    252         stream->output=ms_filter_new(MS_DRAWDIB_DISPLAY_ID); 
     272                stream->output=ms_filter_new(MS_DRAWDIB_DISPLAY_ID); 
    253273#endif 
     274        } 
     275 
    254276        stream->sizeconv=ms_filter_new(MS_SIZE_CONV_ID); 
    255          
     277 
    256278        if (pt->normal_bitrate>0){ 
    257279                ms_message("Limiting bitrate of video encoder to %i bits/s",pt->normal_bitrate); 
     
    377399        /* creates the filters */ 
    378400        stream->source = ms_web_cam_create_reader(device); 
     401 
    379402#ifndef WIN32 
    380403        stream->output = ms_filter_new(MS_VIDEO_OUT_ID); 
Note: See TracChangeset for help on using the changeset viewer.