#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"
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)
#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
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,
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;
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 )