[vlc-commits] avcodec: try to find packet sample format for encoding
Ilkka Ollakka
git at videolan.org
Sun Dec 30 13:13:04 CET 2012
vlc | branch: master | Ilkka Ollakka <ileoo at videolan.org> | Sat Dec 29 15:21:43 2012 +0200| [aaf991fcfb58d24c5d418d285011fad8c9ed2206] | committer: Ilkka Ollakka
avcodec: try to find packet sample format for encoding
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=aaf991fcfb58d24c5d418d285011fad8c9ed2206
---
modules/codec/avcodec/encoder.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
index 79f9951..c3e81b2 100644
--- a/modules/codec/avcodec/encoder.c
+++ b/modules/codec/avcodec/encoder.c
@@ -593,6 +593,22 @@ int OpenEncoder( vlc_object_t *p_this )
p_context->sample_fmt = p_codec->sample_fmts ?
p_codec->sample_fmts[0] :
AV_SAMPLE_FMT_S16;
+
+ // Try if we can use interleaved format for codec input as VLC doesn't really do planar audio yet
+ // FIXME: Remove when planar/interleaved audio in vlc is equally supported
+ if( av_sample_fmt_is_planar( p_context->sample_fmt ) )
+ {
+ msg_Dbg( p_enc, "Trying to find packet sample format instead of %s", av_get_sample_fmt_name( p_context->sample_fmt ) );
+ for( unsigned int i=0; p_codec->sample_fmts[i] != -1; i++ )
+ {
+ if( !av_sample_fmt_is_planar( p_codec->sample_fmts[i] ) )
+ {
+ p_context->sample_fmt = p_codec->sample_fmts[i];
+ msg_Dbg( p_enc, "Using %s as new sample format", av_get_sample_fmt_name( p_context->sample_fmt ) );
+ break;
+ }
+ }
+ }
p_enc->fmt_in.i_codec = GetVlcAudioFormat( p_context->sample_fmt );
p_context->sample_rate = p_enc->fmt_out.audio.i_rate;
More information about the vlc-commits
mailing list