diff -up gst-libav-f42ff3194110b8d2f16b234470e4cce1e4c13de7/ext/libav/gstavaudenc.c.crash gst-libav-f42ff3194110b8d2f16b234470e4cce1e4c13de7/ext/libav/gstavaudenc.c --- gst-libav-f42ff3194110b8d2f16b234470e4cce1e4c13de7/ext/libav/gstavaudenc.c.crash 2013-02-12 11:22:11.000000000 +0100 +++ gst-libav-f42ff3194110b8d2f16b234470e4cce1e4c13de7/ext/libav/gstavaudenc.c 2013-02-24 21:23:17.524265041 +0100 @@ -268,13 +268,17 @@ gst_ffmpegaudenc_set_format (GstAudioEnc ffmpegaudenc->context->scenechange_threshold = 0; ffmpegaudenc->context->inter_threshold = 0; - /* fetch pix_fmt and so on */ + /* fetch sample_fmt and so on */ + /* hack: set context->codec so gst_ffmpeg_audioinfo_to_context() works */ + ffmpegaudenc->context->codec = oclass->in_plugin; gst_ffmpeg_audioinfo_to_context (info, ffmpegaudenc->context); if (!ffmpegaudenc->context->time_base.den) { ffmpegaudenc->context->time_base.den = GST_AUDIO_INFO_RATE (info); ffmpegaudenc->context->time_base.num = 1; ffmpegaudenc->context->ticks_per_frame = 1; } + /* hack: now set context->codec to NULL, which we hope was the original value */ + ffmpegaudenc->context->codec = NULL; if (ffmpegaudenc->context->channel_layout) { gst_ffmpeg_channel_layout_to_gst (ffmpegaudenc->context->channel_layout,