|
|
|
@@ -26,6 +26,20 @@ static int raw_write_header(struct AVFormatContext *s) |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
static int flac_write_header(struct AVFormatContext *s) |
|
|
|
{ |
|
|
|
static const uint8_t header[8] = { |
|
|
|
0x66, 0x4C, 0x61, 0x43, 0x80, 0x00, 0x00, 0x22 |
|
|
|
}; |
|
|
|
uint8_t *streaminfo = s->streams[0]->codec->extradata; |
|
|
|
int len = s->streams[0]->codec->extradata_size; |
|
|
|
if(streaminfo != NULL && len > 0) { |
|
|
|
put_buffer(&s->pb, header, 8); |
|
|
|
put_buffer(&s->pb, streaminfo, len); |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
static int raw_write_packet(struct AVFormatContext *s, AVPacket *pkt) |
|
|
|
{ |
|
|
|
put_buffer(&s->pb, pkt->data, pkt->size); |
|
|
|
@@ -397,6 +411,21 @@ AVInputFormat flac_iformat = { |
|
|
|
.extensions = "flac", |
|
|
|
}; |
|
|
|
|
|
|
|
#ifdef CONFIG_MUXERS |
|
|
|
AVOutputFormat flac_oformat = { |
|
|
|
"flac", |
|
|
|
"raw flac", |
|
|
|
"audio/x-flac", |
|
|
|
"flac", |
|
|
|
0, |
|
|
|
CODEC_ID_FLAC, |
|
|
|
0, |
|
|
|
flac_write_header, |
|
|
|
raw_write_packet, |
|
|
|
raw_write_trailer, |
|
|
|
}; |
|
|
|
#endif //CONFIG_MUXERS |
|
|
|
|
|
|
|
AVInputFormat ac3_iformat = { |
|
|
|
"ac3", |
|
|
|
"raw ac3", |
|
|
|
@@ -792,6 +821,7 @@ int raw_init(void) |
|
|
|
|
|
|
|
av_register_input_format(&shorten_iformat); |
|
|
|
av_register_input_format(&flac_iformat); |
|
|
|
av_register_output_format(&flac_oformat); |
|
|
|
|
|
|
|
av_register_input_format(&ac3_iformat); |
|
|
|
av_register_output_format(&ac3_oformat); |
|
|
|
|