From ea5d6b545cd2be0c833b3d049f347d77424b124c Mon Sep 17 00:00:00 2001 From: Richard Grenville Date: Wed, 21 Mar 2012 08:45:27 +0800 Subject: [PATCH] switcher: Fix compilation with ffmpeg-0.10.2 Removes the deprecated symbols used in switcher.c to make it compile correctly against ffmpeg-0.10.2 I left the deprecated function call avcodec_encode_audio() unchanged since I guess I'm not capable to convert it to use the new avcodec_encode_audio2(), it requires too many changes. Originally posted on: https://bugs.gentoo.org/show_bug.cgi?id=409001 I have no knowledge about the ffmpeg API, so please review the patch carefully, as I could not guarantee it's 100% correct. --- modules/stream_out/switcher.c | 21 ++++++++++----------- 1 files changed, 10 insertions(+), 11 deletions(-) diff --git a/modules/stream_out/switcher.c b/modules/stream_out/switcher.c index 372eef8..50c961f 100644 --- a/modules/stream_out/switcher.c +++ b/modules/stream_out/switcher.c @@ -292,7 +292,6 @@ static int Open( vlc_object_t *p_this ) p_stream->pf_send = Send; p_stream->p_sys = p_sys; - avcodec_init(); avcodec_register_all(); return VLC_SUCCESS; @@ -355,7 +354,7 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt ) return NULL; } - id->ff_enc_c = avcodec_alloc_context(); + id->ff_enc_c = avcodec_alloc_context3( NULL ); /* Set CPU capabilities */ unsigned i_cpu = vlc_CPU(); @@ -388,7 +387,7 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt ) id->ff_enc_c->bit_rate = p_fmt->i_bitrate; vlc_avcodec_lock(); - if( avcodec_open( id->ff_enc_c, id->ff_enc ) ) + if( avcodec_open2( id->ff_enc_c, id->ff_enc, NULL ) ) { vlc_avcodec_unlock(); msg_Err( p_stream, "cannot open encoder" ); @@ -748,7 +747,7 @@ static mtime_t VideoCommand( sout_stream_t *p_stream, sout_stream_id_t *id ) return 0; } - id->ff_enc_c = avcodec_alloc_context(); + id->ff_enc_c = avcodec_alloc_context3( NULL ); /* Set CPU capabilities */ unsigned i_cpu = vlc_CPU(); @@ -803,7 +802,7 @@ static mtime_t VideoCommand( sout_stream_t *p_stream, sout_stream_id_t *id ) id->ff_enc_c->pix_fmt = PIX_FMT_YUV420P; vlc_avcodec_lock(); - if( avcodec_open( id->ff_enc_c, id->ff_enc ) ) + if( avcodec_open2( id->ff_enc_c, id->ff_enc, NULL ) ) { vlc_avcodec_unlock(); msg_Err( p_stream, "cannot open encoder" ); @@ -844,7 +843,7 @@ static block_t *VideoGetBuffer( sout_stream_t *p_stream, sout_stream_id_t *id, if ( id->i_nb_pred >= p_sys->i_gop ) { - id->p_frame->pict_type = FF_I_TYPE; + id->p_frame->pict_type = AV_PICTURE_TYPE_I; #if 0 id->p_frame->me_threshold = 0; id->p_frame->mb_threshold = 0; @@ -853,7 +852,7 @@ static block_t *VideoGetBuffer( sout_stream_t *p_stream, sout_stream_id_t *id, } else { - id->p_frame->pict_type = FF_P_TYPE; + id->p_frame->pict_type = AV_PICTURE_TYPE_P; #if 0 if ( id->p_frame->mb_type != NULL ) { @@ -873,7 +872,7 @@ static block_t *VideoGetBuffer( sout_stream_t *p_stream, sout_stream_id_t *id, #if 0 if ( id->p_frame->mb_type == NULL - && id->ff_enc_c->coded_frame->pict_type != FF_I_TYPE ) + && id->ff_enc_c->coded_frame->pict_type != AV_PICTURE_TYPE_I ) { int mb_width = (id->ff_enc_c->width + 15) / 16; int mb_height = (id->ff_enc_c->height + 15) / 16; @@ -926,13 +925,13 @@ static block_t *VideoGetBuffer( sout_stream_t *p_stream, sout_stream_id_t *id, switch ( id->ff_enc_c->coded_frame->pict_type ) { - case FF_I_TYPE: + case AV_PICTURE_TYPE_I: p_out->i_flags |= BLOCK_FLAG_TYPE_I; break; - case FF_P_TYPE: + case AV_PICTURE_TYPE_P: p_out->i_flags |= BLOCK_FLAG_TYPE_P; break; - case FF_B_TYPE: + case AV_PICTURE_TYPE_B: p_out->i_flags |= BLOCK_FLAG_TYPE_B; break; default: -- 1.7.8.5