Skip to content
Snippets Groups Projects
Commit ce1d2a95 authored by Justin Ruggles's avatar Justin Ruggles Committed by Benjamin Larsson
Browse files

Raw flac muxer, patch by Justin Ruggles (jruggle earthlink net). Can be

used with "-acodec copy" to either copy a flac file verbatim or extract
the raw flac from an ogg-flac file.

Originally committed as revision 5368 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 3644cb8f
No related branches found
No related tags found
No related merge requests found
...@@ -26,6 +26,20 @@ static int raw_write_header(struct AVFormatContext *s) ...@@ -26,6 +26,20 @@ static int raw_write_header(struct AVFormatContext *s)
return 0; 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) static int raw_write_packet(struct AVFormatContext *s, AVPacket *pkt)
{ {
put_buffer(&s->pb, pkt->data, pkt->size); put_buffer(&s->pb, pkt->data, pkt->size);
...@@ -397,6 +411,21 @@ AVInputFormat flac_iformat = { ...@@ -397,6 +411,21 @@ AVInputFormat flac_iformat = {
.extensions = "flac", .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 = { AVInputFormat ac3_iformat = {
"ac3", "ac3",
"raw ac3", "raw ac3",
...@@ -792,6 +821,7 @@ int raw_init(void) ...@@ -792,6 +821,7 @@ int raw_init(void)
av_register_input_format(&shorten_iformat); av_register_input_format(&shorten_iformat);
av_register_input_format(&flac_iformat); av_register_input_format(&flac_iformat);
av_register_output_format(&flac_oformat);
av_register_input_format(&ac3_iformat); av_register_input_format(&ac3_iformat);
av_register_output_format(&ac3_oformat); av_register_output_format(&ac3_oformat);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment