- memcpy( p_tmp, nal[i].p_payload, nal[i].i_payload );
- p_tmp += nal[i].i_payload;
+ if( nal[i].i_type != NAL_SEI )
+ {
+ memcpy( p_extra, nal[i].p_payload, nal[i].i_payload );
+ p_extra += nal[i].i_payload;
+ continue; /* next NAL */
+ }
+
+ /* we won't store this NAL in p_extra */
+ assert( i_extra >= (size_t)nal[i].i_payload );
+ i_extra -= nal[i].i_payload;
+
+ /* Make sure we only have one SEI NAL in the headers */
+ assert(p_sys->i_sei_size == 0);
+ p_sys->i_sei_size = nal[i].i_payload;
+
+ p_sys->p_sei = malloc( p_sys->i_sei_size );
+ if( !p_sys->p_sei )
+ {
+ free( p_extra );
+ Close( VLC_OBJECT(p_enc) );
+ return VLC_ENOMEM;
+ }
+ memcpy( p_sys->p_sei, nal[i].p_payload, nal[i].i_payload );