@ -184,6 +184,7 @@ static void avconv_cleanup(int ret)
av_frame_free ( & ost - > filtered_frame ) ;
av_parser_close ( ost - > parser ) ;
avcodec_free_context ( & ost - > parser_avctx ) ;
av_freep ( & ost - > forced_keyframes ) ;
av_freep ( & ost - > avfilter ) ;
@ -1101,7 +1102,7 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p
& & ost - > enc_ctx - > codec_id ! = AV_CODEC_ID_MPEG2VIDEO
& & ost - > enc_ctx - > codec_id ! = AV_CODEC_ID_VC1
) {
if ( av_parser_change ( ost - > parser , ost - > st - > codec ,
if ( av_parser_change ( ost - > parser , ost - > parser_avctx ,
& opkt . data , & opkt . size ,
pkt - > data , pkt - > size ,
pkt - > flags & AV_PKT_FLAG_KEY ) ) {
@ -1709,14 +1710,6 @@ static int init_output_stream(OutputStream *ost, char *error, int error_len)
" Error initializing the output stream codec context. \n " ) ;
exit_program ( 1 ) ;
}
/*
* FIXME : this is only so that the bitstream filters and parsers ( that still
* work with a codec context ) get the parameter values .
* This should go away with the new BSF / parser API .
*/
ret = avcodec_copy_context ( ost - > st - > codec , ost - > enc_ctx ) ;
if ( ret < 0 )
return ret ;
if ( ost - > enc_ctx - > nb_coded_side_data ) {
int i ;
@ -1747,11 +1740,10 @@ static int init_output_stream(OutputStream *ost, char *error, int error_len)
return ret ;
/*
* FIXME : this is only so that the bitstream filters and parsers ( that still
* work with a codec context ) get the parameter values .
* This should go away with the new BSF / parser API .
* FIXME : will the codec context used by the parser during streamcopy
* This should go away with the new parser API .
*/
ret = avcodec_parameters_to_context ( ost - > st - > codec , ost - > st - > codecpar ) ;
ret = avcodec_parameters_to_context ( ost - > parser_avctx , ost - > st - > codecpar ) ;
if ( ret < 0 )
return ret ;
}
@ -1913,6 +1905,9 @@ static int transcode_init(void)
}
ost - > parser = av_parser_init ( par_dst - > codec_id ) ;
ost - > parser_avctx = avcodec_alloc_context3 ( NULL ) ;
if ( ! ost - > parser_avctx )
return AVERROR ( ENOMEM ) ;
switch ( par_dst - > codec_type ) {
case AVMEDIA_TYPE_AUDIO :