]> git.sesse.net Git - vlc/blobdiff - modules/codec/avcodec/avcodec.c
avcodec: make vlc_va_t a VLC object
[vlc] / modules / codec / avcodec / avcodec.c
index a4e3d8283fcd9dcbbce2c1879023bae05e08657b..2cd356e73c4ea4bdba708d9bcee86524ecec92c2 100644 (file)
 #include <vlc_avcodec.h>
 #include <vlc_cpu.h>
 
-/* ffmpeg header */
 #define HAVE_MMX 1
-#ifdef HAVE_LIBAVCODEC_AVCODEC_H
-#   include <libavcodec/avcodec.h>
-#else
-#   include <avcodec.h>
-#endif
+#include <libavcodec/avcodec.h>
 
 #include "avcodec.h"
 #include "chroma.h"
@@ -148,7 +143,13 @@ vlc_module_begin ()
     add_string( "avcodec-codec", NULL, CODEC_TEXT, CODEC_LONGTEXT, true )
 #if defined(HAVE_AVCODEC_VAAPI) || defined(HAVE_AVCODEC_DXVA2) || defined(HAVE_AVCODEC_VDA)
     add_obsolete_bool( "ffmpeg-hw" ) /* removed since 2.1.0 */
-    add_bool( "avcodec-hw", false, HW_TEXT, HW_LONGTEXT, false )
+    add_bool( "avcodec-hw",
+#if !defined(HAVE_AVCODEC_VDA)
+    false
+#else
+    true
+#endif
+    , HW_TEXT, HW_LONGTEXT, false )
 #if defined(HAVE_AVCODEC_VDA)
     add_integer ( "avcodec-vda-pix-fmt", 0, VDA_PIX_FMT_TEXT,
                   VDA_PIX_FMT_LONGTEXT, false)
@@ -158,7 +159,7 @@ vlc_module_begin ()
 #endif
 #if defined(FF_THREAD_FRAME)
     add_obsolete_integer( "ffmpeg-threads" ) /* removed since 2.1.0 */
-    add_integer( "avcodec-threads", 0, THREADS_TEXT, THREADS_LONGTEXT, true );
+    add_integer( "avcodec-threads", 1, THREADS_TEXT, THREADS_LONGTEXT, true );
 #endif
 
 
@@ -203,7 +204,7 @@ vlc_module_begin ()
     add_string( ENC_CFG_PREFIX "codec", NULL, CODEC_TEXT, CODEC_LONGTEXT, true )
     add_string( ENC_CFG_PREFIX "hq", "simple", ENC_HQ_TEXT,
                 ENC_HQ_LONGTEXT, false )
-        change_string_list( enc_hq_list, enc_hq_list_text, 0 )
+        change_string_list( enc_hq_list, enc_hq_list_text )
     add_integer( ENC_CFG_PREFIX "keyint", 0, ENC_KEYINT_TEXT,
                  ENC_KEYINT_LONGTEXT, false )
     add_integer( ENC_CFG_PREFIX "bframes", 0, ENC_BFRAMES_TEXT,
@@ -328,36 +329,11 @@ static int OpenDecoder( vlc_object_t *p_this )
     p_context->debug = var_InheritInteger( p_dec, "avcodec-debug" );
     p_context->opaque = (void *)p_this;
 
-    /* Set CPU capabilities */
-    p_context->dsp_mask = 0;
-#if defined (__i386__) || defined (__x86_64__)
-    unsigned i_cpu = vlc_CPU();
-    if( !vlc_CPU_MMX() )
-        p_context->dsp_mask |= AV_CPU_FLAG_MMX;
-    if( !vlc_CPU_MMXEXT() )
-        p_context->dsp_mask |= AV_CPU_FLAG_MMX2;
-    if( !(i_cpu & CPU_CAPABILITY_3DNOW) )
-        p_context->dsp_mask |= AV_CPU_FLAG_3DNOW;
-    if( !vlc_CPU_SSE() )
-        p_context->dsp_mask |= AV_CPU_FLAG_SSE;
-    if( !vlc_CPU_SSE2() )
-        p_context->dsp_mask |= AV_CPU_FLAG_SSE2;
-# ifdef AV_CPU_FLAG_SSE3
-    if( !vlc_CPU_SSE3() )
-        p_context->dsp_mask |= AV_CPU_FLAG_SSE3;
-# endif
-# ifdef AV_CPU_FLAG_SSSE3
-    if( !vlc_CPU_SSE3() )
-        p_context->dsp_mask |= AV_CPU_FLAG_SSSE3;
-# endif
-# ifdef AV_CPU_FLAG_SSE4
-    if( !(i_cpu & CPU_CAPABILITY_SSE4_1) )
-        p_context->dsp_mask |= AV_CPU_FLAG_SSE4;
-# endif
-# ifdef AV_CPU_FLAG_SSE42
-    if( !(i_cpu & CPU_CAPABILITY_SSE4_2) )
-        p_context->dsp_mask |= AV_CPU_FLAG_SSE42;
-# endif
+    /* set CPU capabilities */
+#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( 51, 25, 0 )
+    av_set_cpu_flags_mask( INT_MAX & ~GetVlcDspMask() );
+#else
+    p_context->dsp_mask = GetVlcDspMask();
 #endif
 
     p_dec->b_need_packetized = true;
@@ -483,7 +459,7 @@ int ffmpeg_OpenCodec( decoder_t *p_dec )
     vlc_avcodec_unlock();
     if( ret < 0 )
         return VLC_EGENERIC;
-    msg_Dbg( p_dec, "ffmpeg codec (%s) started", p_sys->psz_namecodec );
+    msg_Dbg( p_dec, "avcodec codec (%s) started", p_sys->psz_namecodec );
 
 #ifdef HAVE_AVCODEC_MT
     if( p_dec->fmt_in.i_cat == VIDEO_ES )