| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * raw FLAC muxer | 2  * raw FLAC muxer | 
| 3  * Copyright (c) 2006-2009 Justin Ruggles | 3  * Copyright (c) 2006-2009 Justin Ruggles | 
| 4  * | 4  * | 
| 5  * This file is part of FFmpeg. | 5  * This file is part of FFmpeg. | 
| 6  * | 6  * | 
| 7  * FFmpeg is free software; you can redistribute it and/or | 7  * FFmpeg is free software; you can redistribute it and/or | 
| 8  * modify it under the terms of the GNU Lesser General Public | 8  * modify it under the terms of the GNU Lesser General Public | 
| 9  * License as published by the Free Software Foundation; either | 9  * License as published by the Free Software Foundation; either | 
| 10  * version 2.1 of the License, or (at your option) any later version. | 10  * version 2.1 of the License, or (at your option) any later version. | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
| 32 { | 32 { | 
| 33     put_byte(pb, last_block ? 0x81 : 0x01); | 33     put_byte(pb, last_block ? 0x81 : 0x01); | 
| 34     put_be24(pb, n_padding_bytes); | 34     put_be24(pb, n_padding_bytes); | 
| 35     while (n_padding_bytes > 0) { | 35     while (n_padding_bytes > 0) { | 
| 36         put_byte(pb, 0); | 36         put_byte(pb, 0); | 
| 37         n_padding_bytes--; | 37         n_padding_bytes--; | 
| 38     } | 38     } | 
| 39     return 0; | 39     return 0; | 
| 40 } | 40 } | 
| 41 | 41 | 
| 42 static int flac_write_block_comment(ByteIOContext *pb, AVMetadata *m, | 42 static int flac_write_block_comment(ByteIOContext *pb, AVMetadata **m, | 
| 43                                     int last_block, int bitexact) | 43                                     int last_block, int bitexact) | 
| 44 { | 44 { | 
| 45     const char *vendor = bitexact ? "ffmpeg" : LIBAVFORMAT_IDENT; | 45     const char *vendor = bitexact ? "ffmpeg" : LIBAVFORMAT_IDENT; | 
| 46     unsigned int len, count; | 46     unsigned int len, count; | 
| 47     uint8_t *p, *p0; | 47     uint8_t *p, *p0; | 
| 48 | 48 | 
| 49     len = ff_vorbiscomment_length(m, vendor, &count); | 49     len = ff_vorbiscomment_length(*m, vendor, &count); | 
| 50     p0 = av_malloc(len+4); | 50     p0 = av_malloc(len+4); | 
| 51     if (!p0) | 51     if (!p0) | 
| 52         return AVERROR(ENOMEM); | 52         return AVERROR(ENOMEM); | 
| 53     p = p0; | 53     p = p0; | 
| 54 | 54 | 
| 55     bytestream_put_byte(&p, last_block ? 0x84 : 0x04); | 55     bytestream_put_byte(&p, last_block ? 0x84 : 0x04); | 
| 56     bytestream_put_be24(&p, len); | 56     bytestream_put_be24(&p, len); | 
| 57     ff_vorbiscomment_write(&p, m, vendor, count); | 57     ff_vorbiscomment_write(&p, m, vendor, count); | 
| 58 | 58 | 
| 59     put_buffer(pb, p0, len+4); | 59     put_buffer(pb, p0, len+4); | 
| 60     av_freep(&p0); | 60     av_freep(&p0); | 
| 61     p = NULL; | 61     p = NULL; | 
| 62 | 62 | 
| 63     return 0; | 63     return 0; | 
| 64 } | 64 } | 
| 65 | 65 | 
| 66 static int flac_write_header(struct AVFormatContext *s) | 66 static int flac_write_header(struct AVFormatContext *s) | 
| 67 { | 67 { | 
| 68     int ret; | 68     int ret; | 
| 69     AVCodecContext *codec = s->streams[0]->codec; | 69     AVCodecContext *codec = s->streams[0]->codec; | 
| 70 | 70 | 
| 71     ret = ff_flac_write_header(s->pb, codec, 0); | 71     ret = ff_flac_write_header(s->pb, codec, 0); | 
| 72     if (ret) | 72     if (ret) | 
| 73         return ret; | 73         return ret; | 
| 74 | 74 | 
| 75     ret = flac_write_block_comment(s->pb, s->metadata, 0, | 75     ret = flac_write_block_comment(s->pb, &s->metadata, 0, | 
| 76                                    codec->flags & CODEC_FLAG_BITEXACT); | 76                                    codec->flags & CODEC_FLAG_BITEXACT); | 
| 77     if (ret) | 77     if (ret) | 
| 78         return ret; | 78         return ret; | 
| 79 | 79 | 
| 80     /* The command line flac encoder defaults to placing a seekpoint | 80     /* The command line flac encoder defaults to placing a seekpoint | 
| 81      * every 10s.  So one might add padding to allow that later | 81      * every 10s.  So one might add padding to allow that later | 
| 82      * but there seems to be no simple way to get the duration here. | 82      * but there seems to be no simple way to get the duration here. | 
| 83      * So let's try the flac default of 8192 bytes */ | 83      * So let's try the flac default of 8192 bytes */ | 
| 84     flac_write_block_padding(s->pb, 8192, 1); | 84     flac_write_block_padding(s->pb, 8192, 1); | 
| 85 | 85 | 
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 121     NULL_IF_CONFIG_SMALL("raw FLAC"), | 121     NULL_IF_CONFIG_SMALL("raw FLAC"), | 
| 122     "audio/x-flac", | 122     "audio/x-flac", | 
| 123     "flac", | 123     "flac", | 
| 124     0, | 124     0, | 
| 125     CODEC_ID_FLAC, | 125     CODEC_ID_FLAC, | 
| 126     CODEC_ID_NONE, | 126     CODEC_ID_NONE, | 
| 127     flac_write_header, | 127     flac_write_header, | 
| 128     flac_write_packet, | 128     flac_write_packet, | 
| 129     flac_write_trailer, | 129     flac_write_trailer, | 
| 130     .flags= AVFMT_NOTIMESTAMPS, | 130     .flags= AVFMT_NOTIMESTAMPS, | 
| 131     .metadata_conv = ff_vorbiscomment_metadata_conv, |  | 
| 132 }; | 131 }; | 
| OLD | NEW | 
|---|