# HG changeset patch # User banan # Date 1147446831 0 # Node ID 0bc9422cc0ad105413d6949ab04fc7a47a1c15f9 # Parent 91677ac6fb1944de77ff8739b89984518d456bd5 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. diff -r 91677ac6fb19 -r 0bc9422cc0ad raw.c --- a/raw.c Fri May 12 00:50:43 2006 +0000 +++ b/raw.c Fri May 12 15:13:51 2006 +0000 @@ -26,6 +26,20 @@ 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 @@ .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 @@ 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);