Changeset 4875


Ignore:
Timestamp:
Jul 14, 2014 2:37:06 AM (10 years ago)
Author:
riza
Message:

Re #1776: Initial implementation of Libyuv wrapper. Supports:

  • library detection via autoconf
  • scaling and conversion function (from/to I420 or BGRA)
Location:
pjproject/trunk
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/aconfigure

    r4846 r4875  
    619619openssl_h_present 
    620620ac_no_ssl 
     621ac_libyuv_ldflags 
     622ac_libyuv_cflags 
    621623ac_openh264_ldflags 
    622624ac_openh264_cflags 
     
    775777with_openh264 
    776778enable_openh264 
     779with_libyuv 
     780enable_libyuv 
    777781enable_ipp 
    778782with_ipp 
     
    14411445  --disable-v4l2          Disable Video4Linux2 (default: not disabled) 
    14421446  --disable-openh264      Disable OpenH264 (default: not disabled) 
     1447  --disable-libyuv        Exclude libyuv in the build 
    14431448  --enable-ipp            Enable Intel IPP support. Specify the Intel IPP 
    14441449                          package and samples location using IPPROOT and 
     
    14801485  --with-ffmpeg=DIR       Specify alternate FFMPEG prefix 
    14811486  --with-openh264=DIR     Specify alternate OpenH264 prefix 
     1487  --with-libyuv=DIR       Specify alternate libyuv prefix 
    14821488  --with-ipp=DIR          Specify the Intel IPP location 
    14831489  --with-ipp-samples=DIR  Specify the Intel IPP samples location 
     
    71437149 
    71447150 
     7151# Check whether --with-libyuv was given. 
     7152if test "${with_libyuv+set}" = set; then : 
     7153  withval=$with_libyuv; 
     7154else 
     7155  with_libyuv=no 
     7156 
     7157fi 
     7158 
     7159 
     7160if test "x$ac_cross_compile" != "x" -a "x$with_libyuv" = "xno"; then 
     7161    enable_libyuv=no 
     7162fi 
     7163 
     7164 
     7165 
     7166# Check whether --enable-libyuv was given. 
     7167if test "${enable_libyuv+set}" = set; then : 
     7168  enableval=$enable_libyuv; if test "$enable_libyuv" = "no"; then 
     7169                { $as_echo "$as_me:${as_lineno-$LINENO}: result: Checking if libyuv is disabled...yes" >&5 
     7170$as_echo "Checking if libyuv is disabled...yes" >&6; } 
     7171               fi 
     7172else 
     7173 
     7174                  if test "x$with_libyuv" != "xno" -a "x$with_libyuv" != "x"; then 
     7175                        LIBYUV_PREFIX=$with_libyuv 
     7176                        LIBYUV_CFLAGS="-I$LIBYUV_PREFIX/include" 
     7177 
     7178                        case $target in 
     7179                            arm-apple-darwin*) 
     7180                                LIBYUV_LDFLAGS="-L$LIBYUV_PREFIX/out_ios/Release-iphoneos" 
     7181                                case $ARCH in 
     7182                                    *armv7*) 
     7183                                    LIBYUV_LIBS="-lyuv_neon" 
     7184                                    ;; 
     7185                                *) 
     7186                                    ;; 
     7187                                esac 
     7188                                ;; 
     7189                            *mingw* | *cygw* | *win32* | *w32* | *darwin* | *linux* | *android*) 
     7190                                LIBYUV_LDFLAGS="-L$LIBYUV_PREFIX/out/Release" 
     7191                                ;; 
     7192                            *) 
     7193                                LIBYUV_CFLAGS="" 
     7194                                LIBYUV_LDFLAGS="" 
     7195                                ;; 
     7196                        esac 
     7197 
     7198                        { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using libyuv prefix... $with_libyuv" >&5 
     7199$as_echo "Using libyuv prefix... $with_libyuv" >&6; } 
     7200                  else 
     7201                        LIBYUV_CFLAGS="" 
     7202                        LIBYUV_LDFLAGS="" 
     7203                  fi 
     7204 
     7205                  LIBYUV_LIBS="$LIBYUV_LIBS -lyuv" 
     7206 
     7207                  SAVED_LIBS="$LIBS" 
     7208                  SAVED_LDFLAGS="$LDFLAGS" 
     7209                  SAVED_CFLAGS="$CFLAGS" 
     7210 
     7211                  LIBS="$LIBYUV_LIBS $LIBS" 
     7212                  LDFLAGS="$LIBYUV_LDFLAGS $LDFLAGS" 
     7213                  CFLAGS="$LIBYUV_CFLAGS $CFLAGS" 
     7214 
     7215                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for I420Scale in -lyuv" >&5 
     7216$as_echo_n "checking for I420Scale in -lyuv... " >&6; } 
     7217if ${ac_cv_lib_yuv_I420Scale+:} false; then : 
     7218  $as_echo_n "(cached) " >&6 
     7219else 
     7220  ac_check_lib_save_LIBS=$LIBS 
     7221LIBS="-lyuv 
     7222                                $LIBS" 
     7223cat confdefs.h - <<_ACEOF >conftest.$ac_ext 
     7224/* end confdefs.h.  */ 
     7225 
     7226/* Override any GCC internal prototype to avoid an error. 
     7227   Use char because int might match the return type of a GCC 
     7228   builtin and then its argument prototype would still apply.  */ 
     7229#ifdef __cplusplus 
     7230extern "C" 
     7231#endif 
     7232char I420Scale (); 
     7233int 
     7234main () 
     7235{ 
     7236return I420Scale (); 
     7237  ; 
     7238  return 0; 
     7239} 
     7240_ACEOF 
     7241if ac_fn_c_try_link "$LINENO"; then : 
     7242  ac_cv_lib_yuv_I420Scale=yes 
     7243else 
     7244  ac_cv_lib_yuv_I420Scale=no 
     7245fi 
     7246rm -f core conftest.err conftest.$ac_objext \ 
     7247    conftest$ac_exeext conftest.$ac_ext 
     7248LIBS=$ac_check_lib_save_LIBS 
     7249fi 
     7250{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_yuv_I420Scale" >&5 
     7251$as_echo "$ac_cv_lib_yuv_I420Scale" >&6; } 
     7252if test "x$ac_cv_lib_yuv_I420Scale" = xyes; then : 
     7253   ac_libyuv_cflags="-DPJMEDIA_HAS_LIBYUV=1 $LIBYUV_CFLAGS" 
     7254                                 ac_libyuv_ldflags="$LIBYUV_LDFLAGS $LIBYUV_LIBS" 
     7255 
     7256else 
     7257   LIBS="$SAVED_LIBS" 
     7258                                 LDFLAGS="$SAVED_LDFLAGS" 
     7259                                 CFLAGS="$SAVED_CFLAGS" 
     7260 
     7261fi 
     7262 
     7263 
     7264fi 
     7265 
     7266 
    71457267 
    71467268# Check whether --enable-ipp was given. 
  • pjproject/trunk/aconfigure.ac

    r4846 r4875  
    11611161              ]) 
    11621162 
     1163dnl # libyuv alt prefix 
     1164AC_ARG_WITH(libyuv, 
     1165            AC_HELP_STRING([--with-libyuv=DIR], 
     1166                           [Specify alternate libyuv prefix]), 
     1167            [], 
     1168            [with_libyuv=no] 
     1169            ) 
     1170 
     1171dnl # Do not use default libyuv installation if we are cross-compiling 
     1172if test "x$ac_cross_compile" != "x" -a "x$with_libyuv" = "xno"; then 
     1173    enable_libyuv=no 
     1174fi             
     1175               
     1176dnl # Include libyuv 
     1177AC_SUBST(ac_libyuv_cflags) 
     1178AC_SUBST(ac_libyuv_ldflags) 
     1179AC_ARG_ENABLE(libyuv, 
     1180              AC_HELP_STRING([--disable-libyuv], 
     1181                             [Exclude libyuv in the build]), 
     1182              [if test "$enable_libyuv" = "no"; then 
     1183                AC_MSG_RESULT([Checking if libyuv is disabled...yes]) 
     1184               fi], 
     1185              [ 
     1186                  if test "x$with_libyuv" != "xno" -a "x$with_libyuv" != "x"; then 
     1187                        LIBYUV_PREFIX=$with_libyuv 
     1188                        LIBYUV_CFLAGS="-I$LIBYUV_PREFIX/include" 
     1189                         
     1190                        case $target in 
     1191                            arm-apple-darwin*) 
     1192                                LIBYUV_LDFLAGS="-L$LIBYUV_PREFIX/out_ios/Release-iphoneos" 
     1193                                case $ARCH in 
     1194                                    *armv7*) 
     1195                                    LIBYUV_LIBS="-lyuv_neon" 
     1196                                    ;; 
     1197                                *) 
     1198                                    ;; 
     1199                                esac 
     1200                                ;;                       
     1201                            *mingw* | *cygw* | *win32* | *w32* | *darwin* | *linux* | *android*) 
     1202                                LIBYUV_LDFLAGS="-L$LIBYUV_PREFIX/out/Release" 
     1203                                ;; 
     1204                            *) 
     1205                                LIBYUV_CFLAGS="" 
     1206                                LIBYUV_LDFLAGS="" 
     1207                                ;; 
     1208                        esac                     
     1209                         
     1210                        AC_MSG_RESULT([Using libyuv prefix... $with_libyuv]) 
     1211                  else 
     1212                        LIBYUV_CFLAGS="" 
     1213                        LIBYUV_LDFLAGS=""  
     1214                  fi 
     1215                                   
     1216                  LIBYUV_LIBS="$LIBYUV_LIBS -lyuv" 
     1217                   
     1218                  SAVED_LIBS="$LIBS" 
     1219                  SAVED_LDFLAGS="$LDFLAGS" 
     1220                  SAVED_CFLAGS="$CFLAGS" 
     1221                   
     1222                  LIBS="$LIBYUV_LIBS $LIBS" 
     1223                  LDFLAGS="$LIBYUV_LDFLAGS $LDFLAGS" 
     1224                  CFLAGS="$LIBYUV_CFLAGS $CFLAGS" 
     1225                   
     1226                  AC_CHECK_LIB(yuv, 
     1227                               I420Scale, 
     1228                               [ ac_libyuv_cflags="-DPJMEDIA_HAS_LIBYUV=1 $LIBYUV_CFLAGS" 
     1229                                 ac_libyuv_ldflags="$LIBYUV_LDFLAGS $LIBYUV_LIBS" 
     1230                               ], 
     1231                               [ LIBS="$SAVED_LIBS" 
     1232                                 LDFLAGS="$SAVED_LDFLAGS" 
     1233                                 CFLAGS="$SAVED_CFLAGS" 
     1234                               ], 
     1235                               [] 
     1236                               ) 
     1237              ]) 
    11631238 
    11641239 
  • pjproject/trunk/build.mak.in

    r4815 r4875  
    153153IOS_CFLAGS = @ac_ios_cflags@ 
    154154 
     155# libyuv 
     156LIBYUV_CFLAGS = @ac_libyuv_cflags@  
     157LIBYUV_LDFLAGS =  @ac_libyuv_ldflags@ 
     158 
    155159# PJMEDIA features exclusion 
    156160PJ_VIDEO_CFLAGS += $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(QT_CFLAGS) \ 
    157                    $(OPENH264_CFLAGS) $(IOS_CFLAGS) 
     161                   $(OPENH264_CFLAGS) $(IOS_CFLAGS) $(LIBYUV_CFLAGS) 
    158162PJ_VIDEO_LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) \ 
    159                    $(OPENH264_LDFLAGS) 
    160  
     163                   $(OPENH264_LDFLAGS) $(LIBYUV_LDFLAGS) 
    161164 
    162165# CFLAGS, LDFLAGS, and LIBS to be used by applications 
  • pjproject/trunk/pjmedia/build/Makefile

    r4833 r4875  
    6161                        alaw_ulaw.o alaw_ulaw_table.o avi_player.o \ 
    6262                        bidirectional.o clock_thread.o codec.o conference.o \ 
    63                         conf_switch.o converter.o  converter_libswscale.o \ 
     63                        conf_switch.o converter.o  converter_libswscale.o converter_libyuv.o \ 
    6464                        delaybuf.o echo_common.o \ 
    6565                        echo_port.o echo_suppress.o endpoint.o errno.o \ 
  • pjproject/trunk/pjmedia/build/os-auto.mak.in

    r4812 r4875  
    2626IOS_CFLAGS = @ac_ios_cflags@ 
    2727 
     28# libyuv 
     29LIBYUV_CFLAGS = @ac_libyuv_cflags@ 
     30LIBYUV_LDFLAGS = @ac_libyuv_ldflags@ 
     31 
     32 
    2833# PJMEDIA features exclusion 
    2934export CFLAGS += @ac_no_small_filter@ @ac_no_large_filter@ @ac_no_speex_aec@ \ 
    3035                 $(SDL_CFLAGS) $(FFMPEG_CFLAGS) $(V4L2_CFLAGS) $(QT_CFLAGS) \ 
    31                  $(IOS_CFLAGS) 
    32 export LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) 
     36                 $(IOS_CFLAGS) $(LIBYUV_CFLAGS) 
     37export LDFLAGS += $(SDL_LDFLAGS) $(FFMPEG_LDFLAGS) $(V4L2_LDFLAGS) \ 
     38                  $(LIBYUV_LDFLAGS) 
    3339 
    3440# Define the desired sound device backend 
  • pjproject/trunk/pjmedia/build/pjmedia.vcproj

    r4537 r4875  
    38043804                        </File> 
    38053805                        <File 
     3806                                RelativePath="..\src\pjmedia\converter_libyuv.c" 
     3807                                > 
     3808                        </File> 
     3809                        <File 
    38063810                                RelativePath="..\src\pjmedia\delaybuf.c" 
    38073811                                > 
  • pjproject/trunk/pjmedia/include/pjmedia/config.h

    r4701 r4875  
    12821282#endif 
    12831283 
     1284/** 
     1285 * Specify if libyuv is available. 
     1286 * 
     1287 * Default: 0 (disable) 
     1288 */ 
     1289#ifndef PJMEDIA_HAS_LIBYUV 
     1290#   define PJMEDIA_HAS_LIBYUV                           0 
     1291#endif 
    12841292 
    12851293/** 
  • pjproject/trunk/pjmedia/src/pjmedia/converter.c

    r4412 r4875  
    3535#endif 
    3636 
     37#if defined(PJMEDIA_HAS_LIBYUV) && PJMEDIA_HAS_LIBYUV != 0 
     38PJ_DECL(pj_status_t) 
     39pjmedia_libyuv_converter_init(pjmedia_converter_mgr *mgr); 
     40#endif 
    3741 
    3842PJ_DEF(pj_status_t) pjmedia_converter_mgr_create(pj_pool_t *pool, 
     
    4044{ 
    4145    pjmedia_converter_mgr *mgr; 
    42 #if PJMEDIA_HAS_LIBSWSCALE && PJMEDIA_HAS_LIBAVUTIL 
    4346    pj_status_t status = PJ_SUCCESS; 
    44 #endif 
    4547 
    4648    mgr = PJ_POOL_ALLOC_T(pool, pjmedia_converter_mgr); 
     
    4951    if (!converter_manager_instance) 
    5052        converter_manager_instance = mgr; 
     53 
     54#if defined(PJMEDIA_HAS_LIBYUV) && PJMEDIA_HAS_LIBYUV != 0 
     55    status = pjmedia_libyuv_converter_init(mgr); 
     56    if (status != PJ_SUCCESS) { 
     57        PJ_PERROR(4,(THIS_FILE, status, 
     58                     "Error initializing libyuv converter")); 
     59    } 
     60#endif 
    5161 
    5262#if PJMEDIA_HAS_LIBSWSCALE && PJMEDIA_HAS_LIBAVUTIL 
     
    6171        *p_mgr = mgr; 
    6272 
    63     return PJ_SUCCESS; 
     73    return status; 
    6474} 
    6575 
Note: See TracChangeset for help on using the changeset viewer.