[vlc-commits] transcode: try FI32 as intermediate format
Rafaël Carré
git at videolan.org
Tue Sep 4 14:26:41 CEST 2012
vlc | branch: master | Rafaël Carré <funman at videolan.org> | Tue Sep 4 00:46:17 2012 +0200| [bc3dd56dca6d17b667eaa0edd859815d38c216d4] | committer: Rafaël Carré
transcode: try FI32 as intermediate format
Some formats can only be converted to FI32, and then
a FI32->FL32 converter can be used.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=bc3dd56dca6d17b667eaa0edd859815d38c216d4
---
modules/stream_out/transcode/audio.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/modules/stream_out/transcode/audio.c b/modules/stream_out/transcode/audio.c
index f54aa5f..f8b0f45 100644
--- a/modules/stream_out/transcode/audio.c
+++ b/modules/stream_out/transcode/audio.c
@@ -114,8 +114,25 @@ static int transcode_audio_filter_chain_build( sout_stream_t *p_stream, filter_c
if( !filter_chain_AppendFilter( p_chain, NULL, NULL, NULL, ¤t ) )
{
- msg_Err( p_stream, "Failed to find conversion filter to fl32" );
- return VLC_EGENERIC;
+ /* If that fails, try going through fi32 */
+ current.i_codec =
+ current.audio.i_format = VLC_CODEC_FI32;
+ aout_FormatPrepare( ¤t.audio );
+
+ if( !filter_chain_AppendFilter( p_chain, NULL, NULL, NULL, ¤t ) )
+ {
+ msg_Err( p_stream, "Failed to find conversion filter to fi32" );
+ return VLC_EGENERIC;
+ }
+ current = *filter_chain_GetFmtOut( p_chain );
+ current.i_codec =
+ current.audio.i_format = VLC_CODEC_FL32;
+ aout_FormatPrepare( ¤t.audio );
+ if( !filter_chain_AppendFilter( p_chain, NULL, NULL, NULL, ¤t ) )
+ {
+ msg_Err( p_stream, "Failed to find conversion filter to fl32" );
+ return VLC_EGENERIC;
+ }
}
current = *filter_chain_GetFmtOut( p_chain );
}
More information about the vlc-commits
mailing list