Merge commit '5fdaf312c5541b77b6364db8b49d6abb416a25c0'
* commit '5fdaf312c5541b77b6364db8b49d6abb416a25c0': flac: make avpriv_flac_parse_block_header() inline Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -236,14 +236,10 @@ void avpriv_flac_parse_streaminfo(AVCodecContext *avctx, struct FLACStreaminfo *
|
|||||||
skip_bits_long(&gb, 64); /* md5 sum */
|
skip_bits_long(&gb, 64); /* md5 sum */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if LIBAVCODEC_VERSION_MAJOR < 56
|
||||||
void avpriv_flac_parse_block_header(const uint8_t *block_header,
|
void avpriv_flac_parse_block_header(const uint8_t *block_header,
|
||||||
int *last, int *type, int *size)
|
int *last, int *type, int *size)
|
||||||
{
|
{
|
||||||
int tmp = bytestream_get_byte(&block_header);
|
flac_parse_block_header(block_header, last, type, size);
|
||||||
if (last)
|
|
||||||
*last = tmp & 0x80;
|
|
||||||
if (type)
|
|
||||||
*type = tmp & 0x7F;
|
|
||||||
if (size)
|
|
||||||
*size = bytestream_get_be24(&block_header);
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
#define AVCODEC_FLAC_H
|
#define AVCODEC_FLAC_H
|
||||||
|
|
||||||
#include "avcodec.h"
|
#include "avcodec.h"
|
||||||
|
#include "bytestream.h"
|
||||||
#include "get_bits.h"
|
#include "get_bits.h"
|
||||||
|
|
||||||
#define FLAC_STREAMINFO_SIZE 34
|
#define FLAC_STREAMINFO_SIZE 34
|
||||||
@@ -109,15 +110,10 @@ int avpriv_flac_is_extradata_valid(AVCodecContext *avctx,
|
|||||||
enum FLACExtradataFormat *format,
|
enum FLACExtradataFormat *format,
|
||||||
uint8_t **streaminfo_start);
|
uint8_t **streaminfo_start);
|
||||||
|
|
||||||
/**
|
#if LIBAVCODEC_VERSION_MAJOR < 56
|
||||||
* 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
|
|
||||||
*/
|
|
||||||
void avpriv_flac_parse_block_header(const uint8_t *block_header,
|
void avpriv_flac_parse_block_header(const uint8_t *block_header,
|
||||||
int *last, int *type, int *size);
|
int *last, int *type, int *size);
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate an estimate for the maximum frame size based on verbatim mode.
|
* 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);
|
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 */
|
#endif /* AVCODEC_FLAC_H */
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ static int parse_streaminfo(FLACContext *s, const uint8_t *buf, int buf_size)
|
|||||||
/* need more data */
|
/* need more data */
|
||||||
return 0;
|
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 ||
|
if (metadata_type != FLAC_METADATA_TYPE_STREAMINFO ||
|
||||||
metadata_size != FLAC_STREAMINFO_SIZE) {
|
metadata_size != FLAC_STREAMINFO_SIZE) {
|
||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
@@ -193,7 +193,7 @@ static int get_metadata_size(const uint8_t *buf, int buf_size)
|
|||||||
do {
|
do {
|
||||||
if (buf_end - buf < 4)
|
if (buf_end - buf < 4)
|
||||||
return 0;
|
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;
|
buf += 4;
|
||||||
if (buf_end - buf < metadata_size) {
|
if (buf_end - buf < metadata_size) {
|
||||||
/* need more data in order to read the complete header */
|
/* need more data in order to read the complete header */
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ static int flac_read_header(AVFormatContext *s)
|
|||||||
/* process metadata blocks */
|
/* process metadata blocks */
|
||||||
while (!url_feof(s->pb) && !metadata_last) {
|
while (!url_feof(s->pb) && !metadata_last) {
|
||||||
avio_read(s->pb, header, 4);
|
avio_read(s->pb, header, 4);
|
||||||
avpriv_flac_parse_block_header(header, &metadata_last, &metadata_type,
|
flac_parse_block_header(header, &metadata_last, &metadata_type,
|
||||||
&metadata_size);
|
&metadata_size);
|
||||||
switch (metadata_type) {
|
switch (metadata_type) {
|
||||||
/* allocate and read metadata block for supported types */
|
/* allocate and read metadata block for supported types */
|
||||||
|
|||||||
Reference in New Issue
Block a user