#include <vlc_aout.h>
#include <vlc_sout.h>
#include <vlc_codec.h>
-#include <vlc_interface.h>
+#include <vlc_dialog.h>
+#include <vlc_avcodec.h>
/* ffmpeg header */
#define HAVE_MMX 1
static void* FfmpegThread( vlc_object_t *p_this );
static int FfmpegExecute( AVCodecContext *s,
int (*pf_func)(AVCodecContext *c2, void *arg2),
- void **arg, int *ret, int count );
+ void *arg, int *ret, int count, int );
/*****************************************************************************
* thread_context_t : for multithreaded encoding
if( p_enc->fmt_out.i_cat == VIDEO_ES && i_cat != VIDEO_ES )
{
msg_Err( p_enc, "\"%s\" is not a video encoder", psz_namecodec );
- intf_UserFatal( p_enc, false, _("Streaming / Transcoding failed"),
+ dialog_Fatal( p_enc, _("Streaming / Transcoding failed"),
_("\"%s\" is no video encoder."), psz_namecodec );
return VLC_EGENERIC;
}
if( p_enc->fmt_out.i_cat == AUDIO_ES && i_cat != AUDIO_ES )
{
msg_Err( p_enc, "\"%s\" is not an audio encoder", psz_namecodec );
- intf_UserFatal( p_enc, false, _("Streaming / Transcoding failed"),
+ dialog_Fatal( p_enc, _("Streaming / Transcoding failed"),
_("\"%s\" is no audio encoder."), psz_namecodec );
return VLC_EGENERIC;
}
msg_Err( p_enc, "cannot find encoder %s\n"
"*** Your FFMPEG installation is crippled. ***\n"
"*** Please check with your FFMPEG packager. ***\n"
-"*** This is NOT a VLC media player issue. ***\n", psz_namecodec );
+"*** This is NOT a VLC media player issue. ***", psz_namecodec );
- intf_UserFatal( p_enc, false, _("Streaming / Transcoding failed"), _(
+ dialog_Fatal( p_enc, _("Streaming / Transcoding failed"), _(
/* I have had enough of all these MPEG-3 transcoding bug reports.
* Downstream packager, you had better not patch this out, or I will be really
* annoyed. Think about it - you don't want to fork the VLC translation files,
}
/* Allocate the memory needed to store the encoder's structure */
- if( ( p_sys = (encoder_sys_t *)malloc(sizeof(encoder_sys_t)) ) == NULL )
+ if( ( p_sys = calloc( 1, sizeof(encoder_sys_t) ) ) == NULL )
return VLC_ENOMEM;
- memset( p_sys, 0, sizeof(encoder_sys_t) );
p_enc->p_sys = p_sys;
p_sys->p_codec = p_codec;
p_context->width = p_enc->fmt_in.video.i_width;
p_context->height = p_enc->fmt_in.video.i_height;
- if( p_enc->fmt_out.i_codec == VLC_FOURCC('m', 'p', '2', 'v')
- && (p_context->width > 720 || p_context->height > 576) )
- p_context->level = 4; /* High level */
p_context->time_base.num = p_enc->fmt_in.video.i_frame_rate_base;
p_context->time_base.den = p_enc->fmt_in.video.i_frame_rate;
p_context->extradata = NULL;
p_context->flags |= CODEC_FLAG_GLOBAL_HEADER;
- vlc_mutex_lock( &avcodec_lock );
-
- if( avcodec_open( p_context, p_codec ) )
+ int ret;
+ vlc_avcodec_lock();
+ ret = avcodec_open( p_context, p_codec );
+ vlc_avcodec_unlock();
+ if( ret )
{
- vlc_mutex_unlock( &avcodec_lock );
if( p_enc->fmt_in.i_cat == AUDIO_ES &&
(p_context->channels > 2 || i_codec_id == CODEC_ID_MP2
|| i_codec_id == CODEC_ID_MP3) )
}
p_context->codec = NULL;
- vlc_mutex_lock( &avcodec_lock );
- if( avcodec_open( p_context, p_codec ) )
+ vlc_avcodec_lock();
+ ret = avcodec_open( p_context, p_codec );
+ vlc_avcodec_unlock();
+ if( ret )
{
- vlc_mutex_unlock( &avcodec_lock );
msg_Err( p_enc, "cannot open encoder" );
- intf_UserFatal( p_enc, false,
+ dialog_Fatal( p_enc,
_("Streaming / Transcoding failed"),
_("VLC could not open the encoder.") );
free( p_sys );
else
{
msg_Err( p_enc, "cannot open encoder" );
- intf_UserFatal( p_enc, false, _("Streaming / Transcoding failed"),
+ dialog_Fatal( p_enc, _("Streaming / Transcoding failed"),
_("VLC could not open the encoder.") );
free( p_sys );
return VLC_EGENERIC;
}
}
- vlc_mutex_unlock( &avcodec_lock );
p_enc->fmt_out.i_extra = p_context->extradata_size;
if( p_enc->fmt_out.i_extra )
static int FfmpegExecute( AVCodecContext *s,
int (*pf_func)(AVCodecContext *c2, void *arg2),
- void **arg, int *ret, int count )
+ void *arg, int *ret, int count, int size )
{
struct thread_context_t ** pp_contexts =
(struct thread_context_t **)s->thread_opaque;
- int i;
+ void **argv = arg;
/* Note, we can be certain that this is not called with the same
* AVCodecContext by different threads at the same time */
- for ( i = 0; i < count; i++ )
+ for ( int i = 0; i < count; i++ )
{
vlc_mutex_lock( &pp_contexts[i]->lock );
- pp_contexts[i]->arg = arg[i];
+ pp_contexts[i]->arg = argv[i];
pp_contexts[i]->pf_func = pf_func;
pp_contexts[i]->i_ret = 12345;
pp_contexts[i]->b_work = 1;
vlc_cond_signal( &pp_contexts[i]->cond );
vlc_mutex_unlock( &pp_contexts[i]->lock );
}
- for ( i = 0; i < count; i++ )
+ for ( int i = 0; i < count; i++ )
{
vlc_mutex_lock( &pp_contexts[i]->lock );
while ( !pp_contexts[i]->b_done )
}
}
+ (void)size;
return 0;
}
pp_contexts[i]->b_work = 0;
pp_contexts[i]->b_done = 0;
if ( vlc_thread_create( pp_contexts[i], "encoder", FfmpegThread,
- VLC_THREAD_PRIORITY_VIDEO, false ) )
+ VLC_THREAD_PRIORITY_VIDEO ) )
{
msg_Err( p_enc, "cannot spawn encoder thread, expect to die soon" );
return NULL;
free( pp_contexts );
}
- vlc_mutex_lock( &avcodec_lock );
+ vlc_avcodec_lock();
avcodec_close( p_sys->p_context );
- vlc_mutex_unlock( &avcodec_lock );
+ vlc_avcodec_unlock();
av_free( p_sys->p_context );
free( p_sys->p_buffer );