Commit a000d218 authored by Laurent Aimar's avatar Laurent Aimar

Fixed non compatible avcodec flac extradata.

avcodec will now output extradata using the same format than flac encoder.
parent ae2132b5
...@@ -693,6 +693,30 @@ int OpenEncoder( vlc_object_t *p_this ) ...@@ -693,6 +693,30 @@ int OpenEncoder( vlc_object_t *p_this )
} }
} }
if( i_codec_id == CODEC_ID_FLAC )
{
p_enc->fmt_out.i_extra = 4 + 1 + 3 + p_context->extradata_size;
p_enc->fmt_out.p_extra = malloc( p_enc->fmt_out.i_extra );
if( p_enc->fmt_out.p_extra )
{
uint8_t *p = p_enc->fmt_out.p_extra;
p[0] = 0x66;
p[1] = 0x4C;
p[2] = 0x61;
p[3] = 0x43;
p[4] = 0x00;
p[5] = ( p_context->extradata_size >> 16 ) & 0xff;
p[6] = ( p_context->extradata_size >> 8 ) & 0xff;
p[7] = ( p_context->extradata_size ) & 0xff;
memcpy( &p[8], p_context->extradata, p_context->extradata_size );
}
else
{
p_enc->fmt_out.i_extra = 0;
}
}
else
{
p_enc->fmt_out.i_extra = p_context->extradata_size; p_enc->fmt_out.i_extra = p_context->extradata_size;
if( p_enc->fmt_out.i_extra ) if( p_enc->fmt_out.i_extra )
{ {
...@@ -700,6 +724,8 @@ int OpenEncoder( vlc_object_t *p_this ) ...@@ -700,6 +724,8 @@ int OpenEncoder( vlc_object_t *p_this )
memcpy( p_enc->fmt_out.p_extra, p_context->extradata, memcpy( p_enc->fmt_out.p_extra, p_context->extradata,
p_enc->fmt_out.i_extra ); p_enc->fmt_out.i_extra );
} }
}
p_context->flags &= ~CODEC_FLAG_GLOBAL_HEADER; p_context->flags &= ~CODEC_FLAG_GLOBAL_HEADER;
if( p_enc->fmt_in.i_cat == AUDIO_ES ) if( p_enc->fmt_in.i_cat == AUDIO_ES )
......
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