Commit 97a42c15 authored by Ilkka Ollakka's avatar Ilkka Ollakka

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.
(cherry picked from commit d5cec4585d66dd4c67c496ed29a163436774b793)
Signed-off-by: default avatarIlkka Ollakka <ileoo@videolan.org>
parent db49ad18
......@@ -353,6 +353,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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment