diff options
author | Anton Khirnov <anton@khirnov.net> | 2014-05-26 09:43:50 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2014-05-28 07:48:30 +0200 |
commit | 5fdaf312c5541b77b6364db8b49d6abb416a25c0 (patch) | |
tree | baabc560f234cce310001a1348f80645de8ddb0e /libavcodec | |
parent | 54ed488b1af583df6c9d2a73b4a44f16b7e4f82c (diff) | |
download | ffmpeg-5fdaf312c5541b77b6364db8b49d6abb416a25c0.tar.gz |
flac: make avpriv_flac_parse_block_header() inline
This avoids all the ABI troubles associated with avpriv_.
Since this function is very small and does not depend on any tables,
making it inline should have no adverse effects.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/flac.c | 10 | ||||
-rw-r--r-- | libavcodec/flac.h | 29 | ||||
-rw-r--r-- | libavcodec/flacdec.c | 4 |
3 files changed, 27 insertions, 16 deletions
diff --git a/libavcodec/flac.c b/libavcodec/flac.c index e6a8ab8370..cd1a6ab87d 100644 --- a/libavcodec/flac.c +++ b/libavcodec/flac.c @@ -237,14 +237,10 @@ void avpriv_flac_parse_streaminfo(AVCodecContext *avctx, struct FLACStreaminfo * skip_bits_long(&gb, 64); /* md5 sum */ } +#if LIBAVCODEC_VERSION_MAJOR < 56 void avpriv_flac_parse_block_header(const uint8_t *block_header, int *last, int *type, int *size) { - int tmp = bytestream_get_byte(&block_header); - if (last) - *last = tmp & 0x80; - if (type) - *type = tmp & 0x7F; - if (size) - *size = bytestream_get_be24(&block_header); + flac_parse_block_header(block_header, last, type, size); } +#endif diff --git a/libavcodec/flac.h b/libavcodec/flac.h index 63f41c25a4..fbd34a18b1 100644 --- a/libavcodec/flac.h +++ b/libavcodec/flac.h @@ -28,6 +28,7 @@ #define AVCODEC_FLAC_H #include "avcodec.h" +#include "bytestream.h" #include "get_bits.h" #define FLAC_STREAMINFO_SIZE 34 @@ -109,15 +110,10 @@ int avpriv_flac_is_extradata_valid(AVCodecContext *avctx, enum FLACExtradataFormat *format, uint8_t **streaminfo_start); -/** - * Parse the metadata block parameters from the header. - * @param[in] block_header header data, at least 4 bytes - * @param[out] last indicator for last metadata block - * @param[out] type metadata block type - * @param[out] size metadata block size - */ +#if LIBAVCODEC_VERSION_MAJOR < 56 void avpriv_flac_parse_block_header(const uint8_t *block_header, int *last, int *type, int *size); +#endif /** * Calculate an estimate for the maximum frame size based on verbatim mode. @@ -140,4 +136,23 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb, void ff_flac_set_channel_layout(AVCodecContext *avctx); +/** + * Parse the metadata block parameters from the header. + * @param[in] block_header header data, at least 4 bytes + * @param[out] last indicator for last metadata block + * @param[out] type metadata block type + * @param[out] size metadata block size + */ +static av_always_inline void flac_parse_block_header(const uint8_t *block_header, + int *last, int *type, int *size) +{ + int tmp = bytestream_get_byte(&block_header); + if (last) + *last = tmp & 0x80; + if (type) + *type = tmp & 0x7F; + if (size) + *size = bytestream_get_be24(&block_header); +} + #endif /* AVCODEC_FLAC_H */ diff --git a/libavcodec/flacdec.c b/libavcodec/flacdec.c index 0305d50e30..9ca55cc1de 100644 --- a/libavcodec/flacdec.c +++ b/libavcodec/flacdec.c @@ -156,7 +156,7 @@ static int parse_streaminfo(FLACContext *s, const uint8_t *buf, int buf_size) /* need more data */ return 0; } - avpriv_flac_parse_block_header(&buf[4], NULL, &metadata_type, &metadata_size); + flac_parse_block_header(&buf[4], NULL, &metadata_type, &metadata_size); if (metadata_type != FLAC_METADATA_TYPE_STREAMINFO || metadata_size != FLAC_STREAMINFO_SIZE) { return AVERROR_INVALIDDATA; @@ -187,7 +187,7 @@ static int get_metadata_size(const uint8_t *buf, int buf_size) do { if (buf_end - buf < 4) return 0; - avpriv_flac_parse_block_header(buf, &metadata_last, NULL, &metadata_size); + flac_parse_block_header(buf, &metadata_last, NULL, &metadata_size); buf += 4; if (buf_end - buf < metadata_size) { /* need more data in order to read the complete header */ |