Changeset 1192:29ad880561b5 in mediastreamer2


Ignore:
Timestamp:
Nov 1, 2010 11:31:16 AM (3 years ago)
Author:
Simon Morlat <simon.morlat@…>
Branch:
default
Children:
1193:58278fd087fd, 1194:cf51505c817f
Message:

android display in progress

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/android-display.c

    r1190 r1192  
    3232        JavaVM *jvm; 
    3333        JNIEnv *jenv; 
     34        jobject android_video_window; 
    3435        jobject jbitmap; 
     36        jmethodID get_bitmap_id; 
     37        jmethodID update_id; 
    3538        AndroidBitmapInfo bmpinfo; 
    3639        struct ms_SwsContext *sws; 
     
    4043static void android_display_init(MSFilter *f){ 
    4144        AndroidDisplay *ad=(AndroidDisplay*)ms_new0(AndroidDisplay,1); 
     45        JNIEnv *jenv=NULL; 
     46        jclass wc; 
     47 
    4248        ad->jvm=ms_andsnd_jvm; 
     49 
     50        if ((*(ad->jvm))->AttachCurrentThread(ad->jvm,&jenv,NULL)!=0){ 
     51                ms_error("Could not get JNIEnv"); 
     52                return ; 
     53        } 
     54        wc=(*jenv)->FindClass(jenv,"org/linphone/core/AndroidVideoWindowImpl"); 
     55        if (wc==0){ 
     56                ms_fatal("Could not find org.linphone.core.AndroidVideoWindowImpl class !"); 
     57        } 
     58        ad->get_bitmap_id=(*jenv)->GetMethodID(jenv,wc,"getBitmap", "()Landroid/graphics/Bitmap;"); 
     59        ad->update_id=(*jenv)->GetMethodID(jenv,wc,"update","()V"); 
     60 
    4361        MS_VIDEO_SIZE_ASSIGN(ad->vsize,CIF); 
    4462        f->data=ad; 
     
    106124                                        ms_error("AndroidBitmap_lockPixels() failed !"); 
    107125                                } 
     126                                ms_message("Ask draw of bitmap"); 
     127                                (*ad->jenv)->CallVoidMethod(ad->jenv,ad->android_video_window,ad->update_id); 
    108128                        } 
    109129                } 
     
    116136} 
    117137 
    118 static int android_display_set_bitmap(MSFilter *f, void *arg){ 
     138static int android_display_set_window(MSFilter *f, void *arg){ 
    119139        AndroidDisplay *ad=(AndroidDisplay*)f->data; 
    120140        unsigned long id=*(unsigned long*)arg; 
    121141        int err; 
    122142        JNIEnv *jenv=NULL; 
     143        jobject window=(jobject)id; 
    123144         
    124145        if ((*(ad->jvm))->AttachCurrentThread(ad->jvm,&jenv,NULL)!=0){ 
     
    126147                return -1; 
    127148        } 
     149         
    128150        ms_filter_lock(f); 
    129         ad->jbitmap=(jobject)id; 
     151        ad->jbitmap=(*jenv)->CallObjectMethod(jenv,window,ad->get_bitmap_id); 
     152        ad->android_video_window=window; 
    130153        err=AndroidBitmap_getInfo(jenv,ad->jbitmap,&ad->bmpinfo); 
    131154        if (err!=0){ 
     
    141164 
    142165static MSFilterMethod methods[]={ 
    143         {       MS_VIDEO_DISPLAY_SET_NATIVE_WINDOW_ID , android_display_set_bitmap }, 
     166        {       MS_VIDEO_DISPLAY_SET_NATIVE_WINDOW_ID , android_display_set_window }, 
    144167        {       0, NULL} 
    145168}; 
Note: See TracChangeset for help on using the changeset viewer.