From: Ilkka Ollakka Date: Wed, 7 Jul 2010 12:52:32 +0000 (+0300) Subject: pes.c: make sure H264 stream has aud X-Git-Tag: 1.2.0-pre1~5914 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=d5cec4585d66dd4c67c496ed29a163436774b793;p=vlc pes.c: make sure H264 stream has aud TS-stream needs aud-nals, but didn't find any confirmation yet if ps needs those too, so I assume it does. Maybe it would be better just to check first nal and set boolean for adding aud. --- diff --git a/modules/mux/mpeg/pes.c b/modules/mux/mpeg/pes.c index d926af6564..597b577024 100644 --- a/modules/mux/mpeg/pes.c +++ b/modules/mux/mpeg/pes.c @@ -352,6 +352,33 @@ int EStoPES ( sout_instance_t *p_sout, block_t **pp_pes, block_t *p_es, memcpy( p_es->p_buffer, p_fmt->p_extra, p_fmt->i_extra ); } + if( p_fmt->i_codec == VLC_CODEC_H264 ) + { + int offset=2; + while(offset < p_es->i_buffer ) + { + if( p_es->p_buffer[offset-2] == 0 && + p_es->p_buffer[offset-1] == 0 && + p_es->p_buffer[offset] == 1 ) + break; + offset++; + } + offset++; + if( offset <= p_es->i_buffer-4 && + ((p_es->p_buffer[offset] & 0x1f) != 9) ) /* Not AUD */ + { + /* Make similar AUD as libavformat does */ + p_es = block_Realloc( p_es, 6, p_es->i_buffer ); + p_es->p_buffer[0] = 0x00; + p_es->p_buffer[1] = 0x00; + p_es->p_buffer[2] = 0x00; + p_es->p_buffer[3] = 0x01; + p_es->p_buffer[4] = 0x09; + p_es->p_buffer[5] = 0xe0; + } + + } + i_pts = p_es->i_pts <= 0 ? 0 : p_es->i_pts * 9 / 100; // 90000 units clock i_dts = p_es->i_dts <= 0 ? 0 : p_es->i_dts * 9 / 100; // 90000 units clock