Changeset 218efb93081e39e66b44a78d728847e1a3679db1

Show
Ignore:
Timestamp:
06/02/08 18:44:03 (3 months ago)
Author:
Antoine Cellerier <dionoea@videolan.org>
git-committer:
Antoine Cellerier <dionoea@videolan.org> 1212425043 +0200
git-parent:

[a519caccb5a01a42700c664d69bb5ced218dafa1]

git-author:
Antoine Cellerier <dionoea@videolan.org> 1212416725 +0200
Message:

Chroma modules now exactly implement the "video filter2" capability.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • include/vlc_filter.h

    r2e2178f r218efb9  
    6161 
    6262    picture_t *         ( * pf_video_filter ) ( filter_t *, picture_t * ); 
    63     void                ( * pf_video_filter_io ) ( filter_t *, picture_t *, picture_t * ); /* Used by video filters with a preallocated output buffer (ie chroma conversion modules) */ 
    6463    block_t *           ( * pf_audio_filter ) ( filter_t *, block_t * ); 
    6564    void                ( * pf_video_blend )  ( filter_t *, picture_t *, 
     
    9493}; 
    9594 
     95 
     96/** 
     97 * Create a picture_t *(*)( filter_t *, picture_t * ) compatible wrapper 
     98 * using a void (*)( filter_t *, picture_t *, picture_t * ) function 
     99 * 
     100 * Currently used by the chroma video filters 
     101 */ 
     102#define VIDEO_FILTER_WRAPPER( name )                                    \ 
     103    static picture_t *name ## _Filter ( filter_t *p_filter,             \ 
     104                                        picture_t *p_pic )              \ 
     105    {                                                                   \ 
     106        picture_t *p_outpic = p_filter->pf_vout_buffer_new( p_filter ); \ 
     107        if( !p_outpic )                                                 \ 
     108        {                                                               \ 
     109            msg_Warn( p_filter, "can't get output picture" );           \ 
     110            if( p_pic->pf_release )                                     \ 
     111                p_pic->pf_release( p_pic );                             \ 
     112            return NULL;                                                \ 
     113        }                                                               \ 
     114                                                                        \ 
     115        name( p_filter, p_pic, p_outpic );                              \ 
     116                                                                        \ 
     117        p_outpic->date = p_pic->date;                                   \ 
     118        p_outpic->b_force = p_pic->b_force;                             \ 
     119        p_outpic->i_nb_fields = p_pic->i_nb_fields;                     \ 
     120        p_outpic->b_progressive = p_pic->b_progressive;                 \ 
     121        p_outpic->b_top_field_first = p_pic->b_top_field_first;         \ 
     122                                                                        \ 
     123        if( p_pic->pf_release )                                         \ 
     124            p_pic->pf_release( p_pic );                                 \ 
     125        return p_outpic;                                                \ 
     126    } 
     127 
    96128#endif /* _VLC_FILTER_H */ 
  • modules/video_chroma/chain.c

    r2e2178f r218efb9  
    4747vlc_module_begin(); 
    4848    set_description( N_("Chroma conversions using a chain of chroma conversion modules") ); 
    49     set_capability( "chroma", 1 ); 
     49    set_capability( "video filter2", 1 ); 
    5050    set_callbacks( Activate, Destroy ); 
    5151vlc_module_end(); 
  • modules/video_chroma/grey_yuv.c

    r2e2178f r218efb9  
    4646static void GREY_YUY2( filter_t *, picture_t *, picture_t * ); 
    4747 
     48static picture_t *GREY_I420_Filter( filter_t *, picture_t * ); 
     49static picture_t *GREY_YUY2_Filter( filter_t *, picture_t * ); 
     50 
    4851/***************************************************************************** 
    4952 * Module descriptor. 
     
    5154vlc_module_begin(); 
    5255    set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ); 
    53     set_capability( "chroma", 80 ); 
     56    set_capability( "video filter2", 80 ); 
    5457    set_callbacks( Activate, NULL ); 
    5558vlc_module_end(); 
     
    7881            { 
    7982                case VLC_FOURCC('I','4','2','0'): 
    80                     p_filter->pf_video_filter_io = GREY_I420
     83                    p_filter->pf_video_filter = GREY_I420_Filter
    8184                    break; 
    8285                case VLC_FOURCC('Y','U','Y','2'): 
    83                     p_filter->pf_video_filter_io = GREY_YUY2
     86                    p_filter->pf_video_filter = GREY_YUY2_Filter
    8487                    break; 
    8588                default: 
     
    9497    return 0; 
    9598} 
     99 
     100VIDEO_FILTER_WRAPPER( GREY_I420 ) 
     101VIDEO_FILTER_WRAPPER( GREY_YUY2 ) 
    96102 
    97103/* Following functions are local */ 
  • modules/video_chroma/i420_rgb.c

    r2e2178f r218efb9  
    7272    set_description( N_("I420,IYUV,YV12 to " 
    7373                       "RGB2,RV15,RV16,RV24,RV32 conversions") ); 
    74     set_capability( "chroma", 80 ); 
     74    set_capability( "video filter2", 80 ); 
    7575#elif defined (MODULE_NAME_IS_i420_rgb_mmx) 
    7676    set_description( N_( "MMX I420,IYUV,YV12 to " 
    7777                        "RV15,RV16,RV24,RV32 conversions") ); 
    78     set_capability( "chroma", 100 ); 
     78    set_capability( "video filter2", 100 ); 
    7979    add_requirement( MMX ); 
    8080#elif defined (MODULE_NAME_IS_i420_rgb_sse2) 
    8181    set_description( N_( "SSE2 I420,IYUV,YV12 to " 
    8282                        "RV15,RV16,RV24,RV32 conversions") ); 
    83     set_capability( "chroma", 120 ); 
     83    set_capability( "video filter2", 120 ); 
    8484    add_requirement( SSE2 ); 
    8585#endif 
     
    114114#if defined (MODULE_NAME_IS_i420_rgb) 
    115115                case VLC_FOURCC('R','G','B','2'): 
    116                     p_filter->pf_video_filter_io = I420_RGB8
     116                    p_filter->pf_video_filter = I420_RGB8_Filter
    117117                    break; 
    118118#endif 
     
    127127                        /* R5G5B6 pixel format */ 
    128128                        msg_Dbg(p_this, "RGB pixel format is R5G5B5"); 
    129                         p_filter->pf_video_filter_io = I420_R5G5B5
     129                        p_filter->pf_video_filter = I420_R5G5B5_Filter
    130130                    } 
    131131                    else if( ( p_filter->fmt_out.video.i_rmask == 0xf800 
     
    135135                        /* R5G6B5 pixel format */ 
    136136                        msg_Dbg(p_this, "RGB pixel format is R5G6B5"); 
    137                         p_filter->pf_video_filter_io = I420_R5G6B5
     137                        p_filter->pf_video_filter = I420_R5G6B5_Filter
    138138                    } 
    139139                    else 
     
    141141#else 
    142142                    // generic C chroma converter */ 
    143                     p_filter->pf_video_filter_io = I420_RGB16
     143                    p_filter->pf_video_filter = I420_RGB16_Filter
    144144#endif 
    145145                    break; 
     
    159159                        /* A8R8G8B8 pixel format */ 
    160160                        msg_Dbg(p_this, "RGB pixel format is A8R8G8B8"); 
    161                         p_filter->pf_video_filter_io = I420_A8R8G8B8
     161                        p_filter->pf_video_filter = I420_A8R8G8B8_Filter
    162162                    } 
    163163                    else if( p_filter->fmt_out.video.i_rmask == 0xff000000 
     
    167167                        /* R8G8B8A8 pixel format */ 
    168168                        msg_Dbg(p_this, "RGB pixel format is R8G8B8A8"); 
    169                         p_filter->pf_video_filter_io = I420_R8G8B8A8
     169                        p_filter->pf_video_filter = I420_R8G8B8A8_Filter
    170170                    } 
    171171                    else if( p_filter->fmt_out.video.i_rmask == 0x0000ff00 
     
    175175                        /* B8G8R8A8 pixel format */ 
    176176                        msg_Dbg(p_this, "RGB pixel format is B8G8R8A8"); 
    177                         p_filter->pf_video_filter_io = I420_B8G8R8A8
     177                        p_filter->pf_video_filter = I420_B8G8R8A8_Filter
    178178                    } 
    179179                    else if( p_filter->fmt_out.video.i_rmask == 0x000000ff 
     
    183183                        /* A8B8G8R8 pixel format */ 
    184184                        msg_Dbg(p_this, "RGB pixel format is A8B8G8R8"); 
    185                         p_filter->pf_video_filter_io = I420_A8B8G8R8
     185                        p_filter->pf_video_filter = I420_A8B8G8R8_Filter
    186186                    } 
    187187                    else 
     
    189189#else 
    190190                    /* generic C chroma converter */ 
    191                     p_filter->pf_video_filter_io = I420_RGB32
     191                    p_filter->pf_video_filter = I420_RGB32_Filter
    192192#endif 
    193193                    break; 
     
    294294    free( p_filter->p_sys ); 
    295295} 
     296 
     297#if defined (MODULE_NAME_IS_i420_rgb) 
     298VIDEO_FILTER_WRAPPER( I420_RGB8 ) 
     299VIDEO_FILTER_WRAPPER( I420_RGB16 ) 
     300VIDEO_FILTER_WRAPPER( I420_RGB32 ) 
     301#else 
     302VIDEO_FILTER_WRAPPER( I420_R5G5B5 ) 
     303VIDEO_FILTER_WRAPPER( I420_R5G6B5 ) 
     304VIDEO_FILTER_WRAPPER( I420_A8R8G8B8 ) 
     305VIDEO_FILTER_WRAPPER( I420_R8G8B8A8 ) 
     306VIDEO_FILTER_WRAPPER( I420_B8G8R8A8 ) 
     307VIDEO_FILTER_WRAPPER( I420_A8B8G8R8 ) 
     308#endif 
    296309 
    297310#if defined (MODULE_NAME_IS_i420_rgb) 
  • modules/video_chroma/i420_rgb.h

    r2e2178f r218efb9  
    6161void I420_RGB16        ( filter_t *, picture_t *, picture_t * ); 
    6262void I420_RGB32        ( filter_t *, picture_t *, picture_t * ); 
     63static picture_t *I420_RGB8_Filter         ( filter_t *, picture_t * ); 
     64static picture_t *I420_RGB16_dither_Filter ( filter_t *, picture_t * ); 
     65static picture_t *I420_RGB16_Filter        ( filter_t *, picture_t * ); 
     66static picture_t *I420_RGB32_Filter        ( filter_t *, picture_t * ); 
    6367#else // if defined(MODULE_NAME_IS_i420_rgb_mmx) 
    6468void I420_R5G5B5       ( filter_t *, picture_t *, picture_t * ); 
     
    6872void I420_B8G8R8A8     ( filter_t *, picture_t *, picture_t * ); 
    6973void I420_A8B8G8R8     ( filter_t *, picture_t *, picture_t * ); 
     74static picture_t *I420_R5G5B5_Filter       ( filter_t *, picture_t * ); 
     75static picture_t *I420_R5G6B5_Filter       ( filter_t *, picture_t * ); 
     76static picture_t *I420_A8R8G8B8_Filter     ( filter_t *, picture_t * ); 
     77static picture_t *I420_R8G8B8A8_Filter     ( filter_t *, picture_t * ); 
     78static picture_t *I420_B8G8R8A8_Filter     ( filter_t *, picture_t * ); 
     79static picture_t *I420_A8B8G8R8_Filter     ( filter_t *, picture_t * ); 
    7080#endif 
    7181 
  • modules/video_chroma/i420_ymga.c

    r2e2178f r218efb9  
    4444static int  Activate   ( vlc_object_t * ); 
    4545static void I420_YMGA  ( filter_t *, picture_t *, picture_t * ); 
     46static picture_t *I420_YMGA_Filter( filter_t *, picture_t * ); 
    4647 
    4748/***************************************************************************** 
     
    5152#if defined (MODULE_NAME_IS_i420_ymga) 
    5253    set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ); 
    53     set_capability( "chroma", 80 ); 
     54    set_capability( "video filter2", 80 ); 
    5455#elif defined (MODULE_NAME_IS_i420_ymga_mmx) 
    5556    set_description( N_("MMX conversions from " SRC_FOURCC " to " DEST_FOURCC) ); 
    56     set_capability( "chroma", 100 ); 
     57    set_capability( "video filter2", 100 ); 
    5758    add_requirement( MMX ); 
    5859#endif 
     
    8384            { 
    8485                case VLC_FOURCC('Y','M','G','A'): 
    85                     p_filter->pf_video_filter_io = I420_YMGA
     86                    p_filter->pf_video_filter = I420_YMGA_Filter
    8687                    break; 
    8788 
     
    99100 
    100101/* Following functions are local */ 
     102 
     103VIDEO_FILTER_WRAPPER( I420_YMGA ) 
    101104 
    102105/***************************************************************************** 
  • modules/video_chroma/i420_yuy2.c

    r2e2178f r218efb9  
    6262static void I420_YVYU           ( filter_t *, picture_t *, picture_t * ); 
    6363static void I420_UYVY           ( filter_t *, picture_t *, picture_t * ); 
     64static picture_t *I420_YUY2_Filter    ( filter_t *, picture_t * ); 
     65static picture_t *I420_YVYU_Filter    ( filter_t *, picture_t * ); 
     66static picture_t *I420_UYVY_Filter    ( filter_t *, picture_t * ); 
    6467#if !defined (MODULE_NAME_IS_i420_yuy2_altivec) 
    6568static void I420_IUYV           ( filter_t *, picture_t *, picture_t * ); 
    6669static void I420_cyuv           ( filter_t *, picture_t *, picture_t * ); 
     70static picture_t *I420_IUYV_Filter    ( filter_t *, picture_t * ); 
     71static picture_t *I420_cyuv_Filter    ( filter_t *, picture_t * ); 
    6772#endif 
    6873#if defined (MODULE_NAME_IS_i420_yuy2) 
    6974static void I420_Y211           ( filter_t *, picture_t *, picture_t * ); 
     75static picture_t *I420_Y211_Filter    ( filter_t *, picture_t * ); 
    7076#endif 
    7177 
     
    8288#if defined (MODULE_NAME_IS_i420_yuy2) 
    8389    set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ); 
    84     set_capability( "chroma", 80 ); 
     90    set_capability( "video filter2", 80 ); 
    8591#elif defined (MODULE_NAME_IS_i420_yuy2_mmx) 
    8692    set_description( N_("MMX conversions from " SRC_FOURCC " to " DEST_FOURCC) ); 
    87     set_capability( "chroma", 100 ); 
     93    set_capability( "video filter2", 100 ); 
    8894    add_requirement( MMX ); 
    8995#elif defined (MODULE_NAME_IS_i420_yuy2_sse2) 
    9096    set_description( N_("SSE2 conversions from " SRC_FOURCC " to " DEST_FOURCC) ); 
    91     set_capability( "chroma", 120 ); 
     97    set_capability( "video filter2", 120 ); 
    9298    add_requirement( SSE2 ); 
    9399#elif defined (MODULE_NAME_IS_i420_yuy2_altivec) 
    94100    set_description( 
    95101            _("AltiVec conversions from " SRC_FOURCC " to " DEST_FOURCC) ); 
    96     set_capability( "chroma", 100 ); 
     102    set_capability( "video filter2", 100 ); 
    97103    add_requirement( ALTIVEC ); 
    98104#endif 
     
    124130                case VLC_FOURCC('Y','U','Y','2'): 
    125131                case VLC_FOURCC('Y','U','N','V'): 
    126                     p_filter->pf_video_filter_io = I420_YUY2
     132                    p_filter->pf_video_filter = I420_YUY2_Filter
    127133                    break; 
    128134 
    129135                case VLC_FOURCC('Y','V','Y','U'): 
    130                     p_filter->pf_video_filter_io = I420_YVYU
     136                    p_filter->pf_video_filter = I420_YVYU_Filter
    131137                    break; 
    132138 
     
    134140                case VLC_FOURCC('U','Y','N','V'): 
    135141                case VLC_FOURCC('Y','4','2','2'): 
    136                     p_filter->pf_video_filter_io = I420_UYVY
     142                    p_filter->pf_video_filter = I420_UYVY_Filter
    137143                    break; 
    138144#if !defined (MODULE_NAME_IS_i420_yuy2_altivec) 
    139145                case VLC_FOURCC('I','U','Y','V'): 
    140                     p_filter->pf_video_filter_io = I420_IUYV
     146                    p_filter->pf_video_filter = I420_IUYV_Filter
    141147                    break; 
    142148 
    143149                case VLC_FOURCC('c','y','u','v'): 
    144                     p_filter->pf_video_filter_io = I420_cyuv
     150                    p_filter->pf_video_filter = I420_cyuv_Filter
    145151                    break; 
    146152#endif 
     
    148154#if defined (MODULE_NAME_IS_i420_yuy2) 
    149155                case VLC_FOURCC('Y','2','1','1'): 
    150                     p_filter->pf_video_filter_io = I420_Y211
     156                    p_filter->pf_video_filter = I420_Y211_Filter
    151157                    break; 
    152158#endif 
     
    175181 
    176182/* Following functions are local */ 
     183 
     184VIDEO_FILTER_WRAPPER( I420_YUY2 ) 
     185VIDEO_FILTER_WRAPPER( I420_YVYU ) 
     186VIDEO_FILTER_WRAPPER( I420_UYVY ) 
     187#if !defined (MODULE_NAME_IS_i420_yuy2_altivec) 
     188VIDEO_FILTER_WRAPPER( I420_IUYV ) 
     189#endif 
     190#if defined (MODULE_NAME_IS_i420_yuy2) 
     191VIDEO_FILTER_WRAPPER( I420_Y211 ) 
     192#endif 
     193 
    177194/***************************************************************************** 
    178195 * I420_YUY2: planar YUV 4:2:0 to packed YUYV 4:2:2 
  • modules/video_chroma/i422_i420.c

    r2e2178f r218efb9  
    4747static void I422_YV12( filter_t *, picture_t *, picture_t * ); 
    4848static void I422_YUVA( filter_t *, picture_t *, picture_t * ); 
     49static picture_t *I422_I420_Filter( filter_t *, picture_t * ); 
     50static picture_t *I422_YV12_Filter( filter_t *, picture_t * ); 
     51static picture_t *I422_YUVA_Filter( filter_t *, picture_t * ); 
    4952 
    5053/***************************************************************************** 
     
    5356vlc_module_begin(); 
    5457    set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ); 
    55     set_capability( "chroma", 60 ); 
     58    set_capability( "video filter2", 60 ); 
    5659    set_callbacks( Activate, NULL ); 
    5760vlc_module_end(); 
     
    8184                case VLC_FOURCC('I','Y','U','V'): 
    8285                case VLC_FOURCC('J','4','2','0'): 
    83                     p_filter->pf_video_filter_io = I422_I420
     86                    p_filter->pf_video_filter = I422_I420_Filter
    8487                    break; 
    8588 
    8689                case VLC_FOURCC('Y','V','1','2'): 
    87                     p_filter->pf_video_filter_io = I422_YV12
     90                    p_filter->pf_video_filter = I422_YV12_Filter
    8891                    break; 
    8992 
    9093                case VLC_FOURCC('Y','U','V','A'): 
    91                     p_filter->pf_video_filter_io = I422_YUVA
     94                    p_filter->pf_video_filter = I422_YUVA_Filter
    9295                    break; 
    9396 
     
    104107 
    105108/* Following functions are local */ 
     109VIDEO_FILTER_WRAPPER( I422_I420 ) 
     110VIDEO_FILTER_WRAPPER( I422_YV12 ) 
     111VIDEO_FILTER_WRAPPER( I422_YUVA ) 
    106112 
    107113/***************************************************************************** 
  • modules/video_chroma/i422_yuy2.c

    r2e2178f r218efb9  
    5050static int  Activate ( vlc_object_t * ); 
    5151 
    52 static void I422_YUY2           ( filter_t *, picture_t *, picture_t * ); 
    53 static void I422_YVYU           ( filter_t *, picture_t *, picture_t * ); 
    54 static void I422_UYVY           ( filter_t *, picture_t *, picture_t * ); 
    55 static void I422_IUYV           ( filter_t *, picture_t *, picture_t * ); 
    56 static void I422_cyuv           ( filter_t *, picture_t *, picture_t * ); 
    57 #if defined (MODULE_NAME_IS_i422_yuy2) 
    58 static void I422_Y211           ( filter_t *, picture_t *, picture_t * ); 
    59 static void I422_Y211           ( filter_t *, picture_t *, picture_t * ); 
     52static void I422_YUY2               ( filter_t *, picture_t *, picture_t * ); 
     53static void I422_YVYU               ( filter_t *, picture_t *, picture_t * ); 
     54static void I422_UYVY               ( filter_t *, picture_t *, picture_t * ); 
     55static void I422_IUYV               ( filter_t *, picture_t *, picture_t * ); 
     56static void I422_cyuv               ( filter_t *, picture_t *, picture_t * ); 
     57static picture_t *I422_YUY2_Filter  ( filter_t *, picture_t * ); 
     58static picture_t *I422_YVYU_Filter  ( filter_t *, picture_t * ); 
     59static picture_t *I422_UYVY_Filter  ( filter_t *, picture_t * ); 
     60static picture_t *I422_IUYV_Filter  ( filter_t *, picture_t * ); 
     61static picture_t *I422_cyuv_Filter  ( filter_t *, picture_t * ); 
     62#if defined (MODULE_NAME_IS_i422_yuy2) 
     63static void I422_Y211               ( filter_t *, picture_t *, picture_t * ); 
     64static picture_t *I422_Y211_Filter  ( filter_t *, picture_t * ); 
    6065#endif 
    6166 
     
    6671#if defined (MODULE_NAME_IS_i422_yuy2) 
    6772    set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ); 
    68     set_capability( "chroma", 80 ); 
     73    set_capability( "video filter2", 80 ); 
    6974#elif defined (MODULE_NAME_IS_i422_yuy2_mmx) 
    7075    set_description( N_("MMX conversions from " SRC_FOURCC " to " DEST_FOURCC) ); 
    71     set_capability( "chroma", 100 ); 
     76    set_capability( "video filter2", 100 ); 
    7277    add_requirement( MMX ); 
    7378#elif defined (MODULE_NAME_IS_i422_yuy2_sse2) 
    7479    set_description( N_("SSE2 conversions from " SRC_FOURCC " to " DEST_FOURCC) ); 
    75     set_capability( "chroma", 120 ); 
     80    set_capability( "video filter2", 120 ); 
    7681    add_requirement( SSE2 ); 
    7782#endif 
     
    101106                case VLC_FOURCC('Y','U','Y','2'): 
    102107                case VLC_FOURCC('Y','U','N','V'): 
    103                     p_filter->pf_video_filter_io = I422_YUY2
     108                    p_filter->pf_video_filter = I422_YUY2_Filter
    104109                    break; 
    105110 
    106111                case VLC_FOURCC('Y','V','Y','U'): 
    107                     p_filter->pf_video_filter_io = I422_YVYU
     112                    p_filter->pf_video_filter = I422_YVYU_Filter
    108113                    break; 
    109114 
     
    111116                case VLC_FOURCC('U','Y','N','V'): 
    112117                case VLC_FOURCC('Y','4','2','2'): 
    113                     p_filter->pf_video_filter_io = I422_UYVY
     118                    p_filter->pf_video_filter = I422_UYVY_Filter
    114119                    break; 
    115120 
    116121                case VLC_FOURCC('I','U','Y','V'): 
    117                     p_filter->pf_video_filter_io = I422_IUYV
     122                    p_filter->pf_video_filter = I422_IUYV_Filter
    118123                    break; 
    119124 
    120125                case VLC_FOURCC('c','y','u','v'): 
    121                     p_filter->pf_video_filter_io = I422_cyuv
     126                    p_filter->pf_video_filter = I422_cyuv_Filter
    122127                    break; 
    123128 
    124129#if defined (MODULE_NAME_IS_i422_yuy2) 
    125130                case VLC_FOURCC('Y','2','1','1'): 
    126                     p_filter->pf_video_filter_io = I422_Y211
     131                    p_filter->pf_video_filter = I422_Y211_Filter
    127132                    break; 
    128133#endif 
     
    140145 
    141146/* Following functions are local */ 
     147 
     148VIDEO_FILTER_WRAPPER( I422_YUY2 ) 
     149VIDEO_FILTER_WRAPPER( I422_YVYU ) 
     150VIDEO_FILTER_WRAPPER( I422_UYVY ) 
     151VIDEO_FILTER_WRAPPER( I422_IUYV ) 
     152VIDEO_FILTER_WRAPPER( I422_cyuv ) 
     153#if defined (MODULE_NAME_IS_i422_yuy2) 
     154VIDEO_FILTER_WRAPPER( I422_Y211 ) 
     155#endif 
    142156 
    143157/***************************************************************************** 
  • modules/video_chroma/yuy2_i420.c

    r2e2178f r218efb9  
    4848static void cyuv_I420           ( filter_t *, picture_t *, picture_t * ); 
    4949 
     50static picture_t *YUY2_I420_Filter    ( filter_t *, picture_t * ); 
     51static picture_t *YVYU_I420_Filter    ( filter_t *, picture_t * ); 
     52static picture_t *UYVY_I420_Filter    ( filter_t *, picture_t * ); 
     53static picture_t *cyuv_I420_Filter    ( filter_t *, picture_t * ); 
     54 
    5055/***************************************************************************** 
    5156 * Module descriptor 
     
    5358vlc_module_begin(); 
    5459    set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ); 
    55     set_capability( "chroma", 80 ); 
     60    set_capability( "video filter2", 80 ); 
    5661    set_callbacks( Activate, NULL ); 
    5762vlc_module_end(); 
     
    7984                case VLC_FOURCC('Y','U','Y','2'): 
    8085                case VLC_FOURCC('Y','U','N','V'): 
    81                     p_filter->pf_video_filter_io = YUY2_I420
     86                    p_filter->pf_video_filter = YUY2_I420_Filter
    8287                    break; 
    8388 
    8489                case VLC_FOURCC('Y','V','Y','U'): 
    85                     p_filter->pf_video_filter_io = YVYU_I420
     90                    p_filter->pf_video_filter = YVYU_I420_Filter
    8691                    break; 
    8792 
     
    8994                case VLC_FOURCC('U','Y','N','V'): 
    9095                case VLC_FOURCC('Y','4','2','2'): 
    91                     p_filter->pf_video_filter_io = UYVY_I420
     96                    p_filter->pf_video_filter = UYVY_I420_Filter
    9297                    break; 
    9398 
    9499                case VLC_FOURCC('c','y','u','v'): 
    95                     p_filter->pf_video_filter_io = cyuv_I420
     100                    p_filter->pf_video_filter = cyuv_I420_Filter
    96101                    break; 
    97102 
     
    108113 
    109114/* Following functions are local */ 
     115VIDEO_FILTER_WRAPPER( YUY2_I420 ) 
     116VIDEO_FILTER_WRAPPER( YVYU_I420 ) 
     117VIDEO_FILTER_WRAPPER( UYVY_I420 ) 
     118VIDEO_FILTER_WRAPPER( cyuv_I420 ) 
    110119 
    111120/***************************************************************************** 
  • modules/video_chroma/yuy2_i422.c

    r2e2178f r218efb9  
    4747static void UYVY_I422           ( filter_t *, picture_t *, picture_t * ); 
    4848static void cyuv_I422           ( filter_t *, picture_t *, picture_t * ); 
     49static picture_t *YUY2_I422_Filter    ( filter_t *, picture_t * ); 
     50static picture_t *YVYU_I422_Filter    ( filter_t *, picture_t * ); 
     51static picture_t *UYVY_I422_Filter    ( filter_t *, picture_t * ); 
     52static picture_t *cyuv_I422_Filter    ( filter_t *, picture_t * ); 
    4953 
    5054/***************************************************************************** 
     
    5357vlc_module_begin(); 
    5458    set_description( N_("Conversions from " SRC_FOURCC " to " DEST_FOURCC) ); 
    55     set_capability( "chroma", 80 ); 
     59    set_capability( "video filter2", 80 ); 
    5660    set_callbacks( Activate, NULL ); 
    5761vlc_module_end(); 
     
    7983                case VLC_FOURCC('Y','U','Y','2'): 
    8084                case VLC_FOURCC('Y','U','N','V'): 
    81                     p_filter->pf_video_filter_io = YUY2_I422
     85                    p_filter->pf_video_filter = YUY2_I422_Filter
    8286                    break; 
    8387 
    8488                case VLC_FOURCC('Y','V','Y','U'): 
    85                     p_filter->pf_video_filter_io = YVYU_I422
     89                    p_filter->pf_video_filter = YVYU_I422_Filter
    8690                    break; 
    8791 
     
    8993                case VLC_FOURCC('U','Y','N','V'): 
    9094                case VLC_FOURCC('Y','4','2','2'): 
    91                     p_filter->pf_video_filter_io = UYVY_I422
     95                    p_filter->pf_video_filter = UYVY_I422_Filter
    9296                    break; 
    9397 
    9498                case VLC_FOURCC('c','y','u','v'): 
    95                     p_filter->pf_video_filter_io = cyuv_I422
     99                    p_filter->pf_video_filter = cyuv_I422_Filter
    96100                    break; 
    97101 
     
    109113/* Following functions are local */ 
    110114 
     115VIDEO_FILTER_WRAPPER( YUY2_I422 ) 
     116VIDEO_FILTER_WRAPPER( YVYU_I422 ) 
     117VIDEO_FILTER_WRAPPER( UYVY_I422 ) 
     118VIDEO_FILTER_WRAPPER( cyuv_I422 ) 
     119 
    111120/***************************************************************************** 
    112121 * YUY2_I422: packed YUY2 4:2:2 to planar YUV 4:2:2 
  • src/video_output/video_output.c

    r2e2178f r218efb9  
    515515 * modified inside this function. 
    516516 *****************************************************************************/ 
     517static picture_t *get_pic( filter_t *p_filter ) 
     518{ 
     519    picture_t *p_pic = (picture_t *)p_filter->p_owner; 
     520    p_filter->p_owner = NULL; 
     521    return p_pic; 
     522} 
     523 
    517524static int InitThread( vout_thread_t *p_vout ) 
    518525{ 
     
    673680        p_chroma->fmt_out.video.i_rbshift = p_vout->output.i_rbshift; 
    674681        p_chroma->fmt_out.video.i_lbshift = p_vout->output.i_lbshift; 
    675         msg_Err( p_vout, "HOLA! %4.4s\n", (char*)&p_chroma->fmt_in.video.i_chroma ); 
    676         msg_Err( p_vout, "HOLA! %4.4s\n", (char*)&p_chroma->fmt_out.video.i_chroma ); 
    677         p_chroma->p_module = module_Need( p_chroma, "chroma", NULL, 0 ); 
     682        msg_Err( p_vout, "HOLA! %4.4s", (char*)&p_chroma->fmt_in.video.i_chroma ); 
     683        msg_Err( p_vout, "HOLA! %4.4s", (char*)&p_chroma->fmt_out.video.i_chroma ); 
     684        p_chroma->p_module = module_Need( p_chroma, "video filter2", NULL, 0 ); 
    678685 
    679686        if( p_chroma->p_module == NULL ) 
     
    688695            return VLC_EGENERIC; 
    689696        } 
     697        p_chroma->pf_vout_buffer_new = get_pic; 
    690698 
    691699        msg_Dbg( p_vout, "indirect render, mapping " 
  • src/video_output/vout_pictures.c

    r2e2178f r218efb9  
    379379 
    380380        /* Convert image to the first direct buffer */ 
    381         p_vout->p_chroma->pf_video_filter_io( p_vout->p_chroma, p_pic, p_tmp_pic ); 
     381        p_vout->p_chroma->p_owner = (picture_t *)p_tmp_pic; 
     382        p_vout->p_chroma->pf_video_filter( p_vout->p_chroma, p_pic ); 
    382383 
    383384        /* Render subpictures on the first direct buffer */ 
     
    399400 
    400401        /* Convert image to the first direct buffer */ 
    401         p_vout->p_chroma->pf_video_filter_io( p_vout->p_chroma, p_pic, &p_vout->p_picture[0] ); 
     402        p_vout->p_chroma->p_owner = (picture_t *)&p_vout->p_picture[0]; 
     403        p_vout->p_chroma->pf_video_filter( p_vout->p_chroma, p_pic ); 
    402404 
    403405        /* Render subpictures on the first direct buffer */