Changeset 152:994ae61ef42c in mediastreamer2


Ignore:
Timestamp:
Nov 3, 2008 10:30:27 PM (5 years ago)
Author:
smorlat <smorlat@…>
Branch:
default
Message:

fiw bug when using libswscale, and optimize.

git-svn-id: svn+ssh://svn.savannah.nongnu.org/linphone/trunk@155 3f6dc0c8-ddfe-455d-9043-3cd528dc4637

File:
1 edited

Legend:

Unmodified
Added
Removed
  • linphone/mediastreamer2/src/videoout.c

    r121 r152  
    220220        uint8_t *rgb; 
    221221        int rgb_len; 
     222        struct SwsContext *sws; 
    222223        bool_t new_ev; 
    223224}WinDisplay; 
     
    310311                wd->rgb=NULL; 
    311312                wd->rgb_len=0; 
     313                sws_freeContext(wd->sws); 
     314                wd->sws=NULL; 
    312315        } 
    313316        else 
     
    367370 
    368371 
    369 static void yuv420p_to_rgb(MSPicture *src, uint8_t *rgb){ 
    370         struct SwsContext *sws; 
     372static void yuv420p_to_rgb(WinDisplay *wd, MSPicture *src, uint8_t *rgb){ 
    371373        int rgb_stride=-src->w*3; 
    372374        uint8_t *p; 
    373375 
    374376        p=rgb+(src->w*3*(src->h-1)); 
    375         sws=sws_getContext(src->w,src->h,PIX_FMT_YUV420P, 
     377        if (wd->sws==NULL){ 
     378                wd->sws=sws_getContext(src->w,src->h,PIX_FMT_YUV420P, 
    376379                        src->w,src->h,PIX_FMT_BGR24, 
    377380                        0, NULL, NULL, NULL); 
    378         if (sws_scale(sws,src->planes,src->strides, 0, 
    379                                 0, &p, &rgb_stride)<0){ 
    380                         ms_error("Error in 420->rgb sws_scale()."); 
    381         } 
    382         sws_freeContext(sws); 
     381        } 
     382        if (sws_scale(wd->sws,src->planes,src->strides, 0, 
     383                                src->h, &p, &rgb_stride)<0){ 
     384                ms_error("Error in 420->rgb sws_scale()."); 
     385        } 
    383386} 
    384387 
     
    443446        if (wd->fb.planes[0]) ms_free(wd->fb.planes[0]); 
    444447        if (wd->rgb) ms_free(wd->rgb); 
     448        if (wd->sws) sws_freeContext(wd->sws); 
    445449        ms_free(wd); 
    446450} 
Note: See TracChangeset for help on using the changeset viewer.